[Keras] Inputのshapeとbatch_shapeの違いは?

keras.Inputを用いる際、

inputs = Input(shape(in_shape, in_dim))

inputs = Input(batch_shape(batch_size, in_shape, in_dim))

の引数の指定の仕方が存在する。

このshapeとbatch_shapeの違いは、kerasのソースコードを見ると把握できる。

    shape: A shape tuple (integer), not including the batch size.
        For instance, `shape=(32,)` indicates that the expected input
        will be batches of 32-dimensional vectors.
    batch_shape: A shape tuple (integer), including the batch size.
        For instance, `batch_shape=(10, 32)` indicates that
        the expected input will be batches of 10 32-dimensional vectors.
        `batch_shape=(None, 32)` indicates batches of an arbitrary number
        of 32-dimensional vectors.

これを見ると明らかだが、shapeとbatch_shapeに大きな違いは存在せず、単に、batch_sizeが含まれているかどうかの違いだけである。

このため、

shape=(32,)

batch_shape=(None,32)

は同じことを意味する。

kerasでモデルを記述する場合、Inputでbatch_sizeを指定するよりもmodel.fitで指定することの方が多いので、基本的にshapeで指定する形で問題ないだろう。

参考

https://stackoverflow.com/questions/44792106/when-do-you-use-input-shape-vs-batch-shape-in-keras

Keras,Python

Posted by vastee