Home / AI / Python / Keras / 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個のパラメータが求められます。

参考