公式ドキュメント を確認しましたが、実際にTimeDistributed
がKerasモデルのレイヤーとして何を行うのか理解できませんか?
TimeDistributed
とTimeDistributedDense
の違いを理解できませんでしたか?誰かがTimeDistributedDense
を使うのはいつですか?トレーニングデータセットを減らすだけですか?他のメリットはありますか?
これらの2種類のレイヤーラッパーが何をするかを、正確な例で誰かが説明できますか?
つまり、基本的にTimeDistributedDense
は、シーケンスにDense
レイヤーを段階的に適用するために、Kerasの初期のバージョンで最初に導入されました。 TimeDistributed
は、静的(非順次)レイヤーを取得して順次に適用することを可能にするKerasラッパーです。したがって、たとえばTimeDistributed
ラッパーのおかげで、レイヤーは入力として形状_(d1, .., dn)
_の一部を受け入れます。レイヤーは、_(sequence_len, d1, ..., dn)
_、_X[0,:,:,..,:]
_に提供されるレイヤーを適用することにより、_X[1,:,...,:]
_の形状を持つ入力を受け入れることができます、_...
_、_X[len_of_sequence,:,...,:]
_。
このような使用法の例としては、たとえばTimeDistributed(conv_layer)
を適用して、事前トレーニング済みの畳み込みレイヤーを短いビデオクリップに追加します。ここで、_conv_layer
_はクリップの各フレームに適用されます。出力のシーケンスを生成し、次の繰り返しレイヤーまたはTimeDistributed
レイヤーで消費される可能性があります。
TimeDistributedDense
の使用法は廃止されているので、TimeDistributed(Dense)
を使用することをお勧めします。
TimeDistributedDense
はTimeDistributed
と同じですが、TimeDistributed
は、密なレイヤーだけでなく、さまざまなタイプのレイヤーで使用できるという違いがあります。
Kerasのドキュメントでは、TimeDistributed
について次のように述べています:
「これはlayers.core.TimeDistributedDense
を使用することと厳密に同等であることに注意してください。ただし、TimeDistributed
の違いは、たとえばConvolution2D
レイヤーを使用する場合、Denseだけでなく任意のレイヤーを使用できることです。」