Python Colaboratory
全結合モデル後半作成
ここまで、全結合モデル作成の前半を作成しました。
引き続き、後半部分を作成します。
Dense 層を作ります。
- Dense 層1
Dense 層1を規定します。
第1引数は units(出力次元数)
その層から出力される次元数を正の整数値で指定します。
ざっくり言えばニューロンの数と考えて良いです。
今回の場合は、Dense1層は次の Dense2層に対して20本出力しています。
なので units = 20です。
20個のデータを出力するのでこの層は 20次元となります。
第2引数は activation(活性化関数)です。
今回は、tanh を使用します。
第3引数は kernel_initializer(重みの初期化の方法)です。
zeros:すべてを0に初期化
ones : すべてを1に初期化
これはどちらにするか難しいです。
運しだいです。
失敗すると大域最適解が見つかりません。
今回は
kernel_initializer='zeros'
とします。
kernel_initializer='ones'
は失敗します。
'zeros' の方がうまく行く確率が高いようです。
Dense 層1をまとめると次のようになります。x = layers.Dense( 20, activation="tanh", kernel_initializer='zeros' )(x)
- Dense 層2
Dense 層2は Outputs(出力層)です。
RNN の場合、この層には活性化関数を設定せず、単に units(出力次元数)を1とするだけ なのが一般的なようです。
outputs = layers.Dense(1)(x) - モデル確定
モデルを確定します。
model = keras.Model(inputs, outputs)
モデルがどのようにできたか見てみましょう。
print(model.summary())
全結合モデルまとめ
本モデルファイルをまとめます。
ファイル名は keras-test-52.ipynb としそのファイル内容をまとめると、以下のようになります。
from tensorflow import keras from keras import layers from keras import initializers sequence_length = 20 inputs = keras.Input(shape=(sequence_length,)) x = layers.Flatten()(inputs) x = layers.Dense( 20, activation="tanh", kernel_initializer='zeros' )(x) outputs = layers.Dense(1)(x) model = keras.Model(inputs, outputs) print("モデルア-キテクチャ") print(model.summary())
全結合モデルファイル動作確認
全結合モデルファイルが完成しましたので Colab の中で動かしてみましょう。
Colab 内の左上隅にある「ファイル」から「ノ-トブックを新規作成」をクリック。
上記ファイル内容をコピしてこれをノートブックの画面内のボックス(セル)のなかに
貼付け[Ctrl + v]ます。
画面上部のファイル名をクリックして、ファイル名を
keras-test-52.ipynb
に変更します。
その後、▷ をクリックして動作させます。
下記のようになるはずです。
結果をみると
dense のパラメータ数(重み行列のサイズ)は
20×(20 + 1) = 420
となっています。
(20 + 1)となっているのはバイアスも重みに含めているためです。
ユーザはバイアスの存在を気にする必要はありませんが
裏ではバイアスも考慮されていることがパラメータ数からわかります。
なお、model や dense には番号が付与されますがこの値は実行するたびに増えていきます。
ここまでで、全結合モデルファイルが完成しました。
引き続き、コ-ルバックを使用します。