私は、KerasでTimeDistributedラッパーが何をするかを把握しようとしています。
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)
両方のモデルについて、(None、10、1)の出力形状が得られました。
RNNレイヤーの後、TimeDistributedレイヤーとDenseレイヤーの違いを説明できる人はいますか?
In keras
-シーケンシャルモデルの構築中-通常は2番目のディメンション(サンプルディメンションの1つ後)-time
ディメンションに関連付けられます。これは、たとえば、データが5-dim
と(sample, time, width, length, channel)
の場合、TimeDistributed
(4-dim
と(sample, width, length, channel)
に適用可能)を使用して畳み込みレイヤーを時間ディメンション(各タイムスライスに同じレイヤーを適用)に沿って適用できることを意味します5-d
出力を取得します。
Dense
の場合は、バージョン2.0のkeras
でDense
がデフォルトで最後の次元にのみ適用されます(たとえば、形状(n, m, o, p)
の入力にDense(10)
を適用すると、形状の出力が得られます) (n, m, o, 10)
)あなたの場合、Dense
とTimeDistributed(Dense)
は同等です。