我试图了解 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的情况是这样的,你的情况kerasDense是相当于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/

10-12 21:51