TimeDistributed 层在 Keras 中的作用是什么?

问题描述 投票:0回答:2

我正在尝试了解 TimeDistributed 包装器在 Keras 中的作用。

我知道 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 层之间的区别吗?

python machine-learning keras neural-network deep-learning
2个回答
106
投票

keras
中 - 在构建顺序模型时 - 通常是第二个维度(样本维度之后的一个) - 与
time
维度相关。这意味着,例如,如果您的数据是
5-dim
(sample, time, width, length, channel)
,您可以沿时间维度使用
TimeDistributed
(适用于
4-dim
(sample, width, length, channel)
)应用卷积层(将同一层应用于每个时间片)以获得
5-d
输出。

Dense
的情况是,在2.0版本的
keras
中,
Dense
默认仅应用于最后一个维度(例如,如果您将
Dense(10)
应用于形状为
(n, m, o, p)
的输入,您将获得形状为
的输出(n, m, o, 10)
)所以在你的情况下
Dense
TimeDistributed(Dense)
是等价的。


0
投票
B = 2 # number of batches
d_model = 8 # embedding dimension
T = 3 # number of timesteps

dense_layer = tf.keras.layers.Dense(16)
inp = np.random.randn(B, T, d_model)

# using TimeDistributed layer
inputs = tf.keras.Input(shape=(T, d_model)) # (B, T, d_model)
outputs = tf.keras.layers.TimeDistributed(dense_layer)(inputs) # (B, T, 16)
model1 = keras.Model(inputs, outputs)

otpt1 = model1(inp)

TimeDistributed
Layer 将包裹在其内部的层应用到每个时间步 因此,包裹在其中的
dense_layer
的输入形状是
(B, d_model)
,因此在应用具有形状
dense_layer
权重的
(d_model, 16)
后,输出是
(B, 16)
,在所有时间步骤中执行此操作,我们得到形状
 的输出(B, T, 16)

# Without using TimeDistributed layer
inputs = tf.keras.Input(shape=(T, d_model)) # (B, T, d_model)
outputs = dense_layer(inputs) # (B, T, 16)
model2 = keras.Model(inputs, outputs)

otpt2 = model2(inp)

在不使用

TimeDistributed
的情况下,
dense_layer
的输入形状为
(B, T, d_model)
,因此权重维度为
(d_model, 16)
,适用于所有批次
B
以给出输出形状
(B, T, 16)

np.all(otpt1.numpy() == otpt2.numpy()) # True
  • Dense
    没有
    TimeDistributed
    计算每个
    Batch
  • TimeDistributed
    Dense
    计算每个
    Timestep
© www.soinside.com 2019 - 2024. All rights reserved.