KerasのInput Shape・Output Shape・Paramの形状
KerasのInput Shape・Output Shape・Paramの各形状についてまとめました。
import tensorflow as tf
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=9, activation='relu'))
model.add(tf.keras.layers.Dense(units=18, activation='relu'))
model.build(input_shape=(None, 3))
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 9) 36
dense_1 (Dense) (None, 18) 180
=================================================================
Total params: 216
Trainable params: 216
Non-trainable params: 0
Input Shape
Input Shapeとは入力形状のことで、(バッチサイズ, 入力ユニットの個数)
という形式になります。
input_shape=(None, 3)
任意のバッチサイズを使う場合はNone
を指定します。
入力ユニットの個数は、説明変数の個数となります。
Output Shape
Output Shapeとは出力形状のことで、(バッチサイズ, 出力ユニットの個数)
という形式になります。
(None, 9)
任意のバッチサイズである場合は、バッチサイズはNone
となります。
出力ユニットの個数は、目的変数の個数となります。
Param
Paramとはパラメータのことで、ユニット数×入力数+バイアス
という計算でパラメータ数が求められます。
各層のパラメータ数
1つ目の層
dense (Dense) (None, 9) 36
1つ目の層は、
- 9個のユニット
- 3個の入力
- 9個のバイアス
なので、9 × 3 + 9 = 36
で36個のパラメータが求められます。
2つ目の層
dense_1 (Dense) (None, 18) 180
2つ目の層は、
- 18個のユニット
- 9個の入力
- 18個のバイアス
なので、18 × 9 + 18 = 180
で180個のパラメータが求められます。