我试图了解 TimeDistributed 包装器在 Keras 中的作用。
我得到 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)
对于这两种模型,我得到了 (None, 10, 1) 的输出形状。
谁能解释一下 RNN 层之后的 TimeDistributed 层和 Dense 层之间的区别?
最佳答案
在 keras
中 - 在构建顺序模型时 - 通常是第二个维度(样本维度之后的一个) - 与 time
维度相关。这意味着,如果例如,你的数据是5-dim
与(sample, time, width, length, channel)
你可以为了获得TimeDistributed
输出申请使用4-dim
沿着时间维度的卷积层(其是适用于(sample, width, length, channel)
与5-d
)(应用相同的层,以每个时间片) .
与Dense
的情况是这样的,你的情况keras
和Dense
是相当于Dense(10)
从版本2.0 (n, m, o, p)
默认情况下只应用于最后一个维度(例如,如果你申请(n, m, o, 10)
输入与形状Dense
你会得到与形状TimeDistributed(Dense)
输出)。
关于python - TimeDistributed 层在 Keras 中的作用是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47305618/