[source]

TimeDistributed

keras.layers.wrappers.TimeDistributed(layer)

このラッパーにより,入力のすべての時間スライスにレイヤーを適用することができます.

入力は少なくとも3次元である必要があります. インデックスの次元は時間次元であると見なされます.

例えば,32個のサンプルを持つバッチを考えます.各サンプルは16次元で構成される10個のベクトルを持ちます. このとき,バッチの入力の形状は(32, 10, 16)となります(input_shapeはサンプル数の次元を含まないため,(10, 16)となります).

このとき,10個のタイムスタンプのレイヤーそれぞれにDenseを適用するために,TimeDistributedを利用することができます:

# as the first layer in a model
model = Sequential()
model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
# now model.output_shape == (None, 10, 8)

# subsequent layers: no need for input_shape
model.add(TimeDistributed(Dense(32)))
# now model.output_shape == (None, 10, 32)

出力の形状は(32, 10, 8)となります.

これは,厳密にはlayers.core.TimeDistributedDenseを利用することと同等であることに注意してください. しかしながら,TimeDistributedとの違いは,Denseだけではなく,任意のレイヤーに対して利用することが可能な点です. 例えば,Convolution2Dレイヤーに対して:

model = Sequential()
model.add(TimeDistributed(Convolution2D(64, 3, 3), input_shape=(10, 3, 299, 299)))

引数

  • layer: レイヤーインスタンス.