use*_*237 4 python lstm keras tensorflow
我正在尝试为序列预测实现一个简单的多对多 LSTM。问题很简单。输入是一个由 0 和 1 组成的序列。每个时间步的输出是该时间步之前序列中 1 的计数。例如,假设输入是 [0 1 0 1]。给定输入的输出将是 time0=0、time1=1、time2=1、time3=2。我应该注意,我使用 One hot encoding 来表示输出。
假设:输入序列的长度是 20(所以我最多可以有 20 个序列)。因此,我考虑了 21 个输出类(一种热编码)。0 类表示序列中没有一个。第 21 类显示我们在序列中有 20 个。
到目前为止,我使用以下模型:
# create LSTM
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(30, input_shape=(20, 1), return_sequences=True ))
#model.add(tf.keras.layers.LSTM(30, input_shape=(20, 1)))
print (model.input_shape)
print (model.output_shape)
model.add(tf.keras.layers.Dropout(0.2))
#model.add(tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(21, activation='softmax')))
model.add(tf.keras.layers.Dense(21, activation='softmax'))
print(model.summary())
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
我通过添加和删除“tf.keras.layers.TimeDistributed”来评估它。两者都达到了99%的相同准确率!我想知道为什么会这样?那么我们什么时候需要使用“TimeDistributed”呢?那是为了什么?
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |