パート1: すてきな賞品を当てよう
この演習では、Dense レイヤーについて学びます。せっかくなので楽しい題材で進めましょう。あるゲーム番組では、賞品がニューラルネットワークで決まるとします。出場者は次の情報を入力します。
- 兄弟姉妹の人数
- 今日飲んだコーヒーの杯数
- トマトが好きかどうか
そしてモデルが、その出場者が何を獲得するかを予測します。
これを実装するために Keras を使います。3つの特徴量(兄弟姉妹の人数は整数、コーヒーの杯数は整数、トマトが好きかどうかは 0/1)を受け取る入力レイヤーを持つモデルを作成します。入力は Dense レイヤーを通り、3つの確率(車、ギフト券、何も当たらない、の当選確率)を出力します。
Input と Dense レイヤー、および Keras の Model オブジェクトはすでにインポートされています。さらに、Dense レイヤーの初期化に使う重み初期化子 init も用意されています。
この演習はコースの一部です
Kerasで学ぶMachine Translation
演習の手順
- 3人の出場者(バッチサイズ)にのみ対応し、各出場者が3つの入力(兄弟姉妹の人数、コーヒーの杯数、トマトの好み)を持つ入力レイヤーを定義します(入力サイズ)。
- 出力が3、
softmax活性化、初期化子にinitを指定したDenseレイヤーを定義します。 - 定義したモデルを使って
xの予測を計算します。 - 各出場者について、最も確からしい賞品(整数)を取得します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define an input layer with batch size 3 and input size 3
inp = Input(____=(____,____))
# Get the output of the 3 node Dense layer
pred = ____(____, ____=____, kernel_initializer=init, bias_initializer=init)(inp)
model = Model(inputs=inp, outputs=pred)
names = ["Mark", "John", "Kelly"]
prizes = ["Gift voucher", "Car", "Nothing"]
x = np.array([[5, 0, 1], [0, 3, 1], [2, 2, 1]])
# Compute the model prediction for x
y = ____.____(____)
# Get the most probable class for each sample
classes = np.____(____, ____)
print("\n".join(["{} has probabilities {} and wins {}".format(n,p,prizes[c]) \
for n,p,c in zip(names, y, classes)]))