KerasでのTimeDistributedレイヤーの役割は何ですか?


83

TimeDistributedラッパーがKerasで何をするのかを把握しようとしています。

TimeDistributedは「入力のすべての時間スライスにレイヤーを適用する」と思います。

しかし、私はいくつかの実験をして、私が理解できない結果を得ました。

つまり、LSTMレイヤーに関連して、TimeDistributedレイヤーとDenseレイヤーだけで同じ結果が得られます。

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)

どちらのモデルでも、(なし、10、1)の出力形状が得られました。

RNNレイヤーの後のTimeDistributedレイヤーとDenseレイヤーの違いを誰かが説明できますか?


1
現在、違いはありません。ここでそれについて説明します。本来の目的はDense、入力をフラット化してから再形成するレイヤーを区別することでした。これにより、異なるタイムステップを接続し、パラメーターを増やしTimeDistributed、タイムステップを分離したままにします(したがって、パラメーターを減らします)。あなたの場合Dense、500個のTimeDistributed
パラメータが必要でしたが

@gionniいいえ、同じ数のパラメーターがあります(両方とも6つ)。それで、実質的に違いのatmはありませんか?
Buomsoo Kim 2017

ええ、正確には、それらは違いがあった場合に彼らが持つであろうパラメータの数です。現時点ではありません
gionni 2017年

回答:


85

keras-シーケンシャルモデルを構築している間-通常は2番目のディメンション(サンプルディメンションの1つ後)-はtimeディメンションに関連しています。これは、たとえば、データが5-dim一緒にある(sample, time, width, length, channel)場合、出力を取得するために、時間ディメンションに沿って(withにTimeDistributed適用可能)を使用して畳み込み層を適用できる(各タイムスライスに同じ層を適用できる)ことを意味します。4-dim(sample, width, length, channel)5-d

以下の場合は、Denseしていることであるkerasバージョン2.0からDenseデフォルトである(あなたが適用された場合などにのみ最後の次元に適用されるDense(10)形で入力する(n, m, o, p)あなたは形状の出力が得られます(n, m, o, 10)ので、あなたの場合)DenseTimeDistributed(Dense)同等です。


3
モデル自体をラップするTimeDistributedを使用する例があります。これをInputテンソルにmap適用すると、Input?の各スライスを含むリストに適用されたモデルを実行する場合と比較して、これとの違いはありますか?
CMCDragonkai 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.