1. ホーム
  2. python

[解決済み] KerasのTimeDistributedレイヤーの役割とは?

2022-11-11 03:12:51

質問

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)

どちらのモデルでも、出力形状は (なし、10、1) .

RNN層の後のTimeDistributed層とDense層の違いを説明できる方いらっしゃいますか?

どのように解決するのですか?

keras - を構築している間、通常2番目の次元(サンプル次元の1つ後)は time の次元に関連します。これは、例えば、あなたのデータが 5-dim(sample, time, width, length, channel) を使って畳み込みレイヤーを適用することができます。 TimeDistributed (に適用されます)。 4-dim(sample, width, length, channel) を得るために、時間軸に沿って(各タイムスライスに同じレイヤーを適用する)、次のようにします。 5-d を出力する。

の場合は Dense は、その中で keras バージョン2.0から Dense はデフォルトでは最後の次元にのみ適用されます (例: もし Dense(10) を適用した場合 (n, m, o, p) と入力すると、出力は (n, m, o, 10) で出力されます)ですから、あなたの場合 Dense となり TimeDistributed(Dense) は等価です。