web-dev-qa-db-ja.com

TimeDistributedとTimeDistributedDense Keras

公式ドキュメント を確認しましたが、実際にTimeDistributedがKerasモデルのレイヤーとして何を行うのか理解できませんか?

TimeDistributedTimeDistributedDenseの違いを理解できませんでしたか?誰かがTimeDistributedDenseを使うのはいつですか?トレーニングデータセットを減らすだけですか?他のメリットはありますか?

これらの2種類のレイヤーラッパーが何をするかを、正確な例で誰かが説明できますか?

14
Wasi Ahmad

つまり、基本的に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)を使用することをお勧めします。

18
Marcin Możejko

TimeDistributedDenseTimeDistributedと同じですが、TimeDistributedは、密なレイヤーだけでなく、さまざまなタイプのレイヤーで使用できるという違いがあります。

Kerasのドキュメントでは、TimeDistributedについて次のように述べています:

「これはlayers.core.TimeDistributedDenseを使用することと厳密に同等であることに注意してください。ただし、TimeDistributedの違いは、たとえばConvolution2Dレイヤーを使用する場合、Denseだけでなく任意のレイヤーを使用できることです。」

0
BenDes