10

私は、TimeDistributedラッパーがKerasで何をするのか把握しようとしています。KerasのTimeDistributedレイヤーの役割は何ですか?

私は、TimeDistributedが "入力のすべての一時的スライスにレイヤーを適用します。"

しかし、私はいくつかの実験を行い、理解できない結果を得ました。要するに、LSTM層に関連して、TimeDistributedとJust 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) 

、Iは(なし、10、1)の出力形状を得ました。

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

+0

ここでは違いはありませんが、[ここ](https://github.com/fchollet/keras/issues/278)でディスカッションを行います。私は元の意図は、入力を平坦化してから再形成することで、異なる時間ステップを接続し、より多くのパラメータを持つ 'Dense'レイヤと、時間ステップを分離したまま(したがってパラメータを少なくする)' TimeDistributed'とを区別することでした。あなたのケースでは、 'Dense'は500人のパラメータを持っているはずです。' TimeDistributed'のみ50 – gionni

+0

@gionniいいえ、パラメータ数は同じです(両方とも6です)。だから、事実上違いはありません。 –

+0

まあ、違いがあった場合のパラメータの数です。現時点ではない – gionni

答えて

7

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

場合のみ、最後の次元に適用されるバージョン2.0 Denseからkerasには、デフォルトであるということである(例えば、あなたがシェイプ(n, m, o, p)で入力にDense(10)を適用する場合は、形状(n, m, o, 10)で出力が得られます)ので、あなたのケースでDenseTimeDistributed(Dense)は同等です。

+1

あなたが気にしないなら、私はupvoteに感謝します。 –

関連する問題