如何在python的kers中添加LSTM中的dropout和attention

2024-04-20 09:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约1000个节点数据集,其中每个节点有4个时间序列。每个时间序列正好有6个长度很长时间了标签为0或1(即二进制分类)。你知道吗

更确切地说,我的数据集如下所示。你知道吗

node, time-series1, time_series2, time_series_3, time_series4, Label
n1, [1.2, 2.5, 3.7, 4.2, 5.6, 8.8], [6.2, 5.5, 4.7, 3.2, 2.6, 1.8], …, 1
n2, [5.2, 4.5, 3.7, 2.2, 1.6, 0.8], [8.2, 7.5, 6.7, 5.2, 4.6, 1.8], …, 0
and so on.

normalise将时间序列输入LSTM模型进行分类之前。你知道吗

model = Sequential()
model.add(LSTM(10, input_shape=(6,4)))
model.add(Dense(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

print(data.shape) # (1000, 6, 4)
model.fit(data, target)

我是keras的新手,这就是为什么从最简单的LSTM模型开始。不过,现在我想让它成为一个水平,我可以使用它在一个行业的水平。你知道吗

我了解到向LSTM模型添加dropoutattention层是很好的。请让我知道,如果你认为添加这样的层适用于我的问题,如果是这样,如何做到这一点?:)

注:我不局限于droupout和注意层,很高兴收到其他建议,我可以用来改进我的模型。你知道吗

如果需要,我很乐意提供更多细节。你知道吗


Tags: 数据模型adddatamodel节点time时间
1条回答
网友
1楼 · 发布于 2024-04-20 09:20:25

如果您想在lstm单元中添加dropout,可以尝试以下操作

model = Sequential()
model.add(LSTM(10, input_shape=(6,4), dropout=0.5))
model.add(Dense(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

print(data.shape) # (1000, 6, 4)
model.fit(data, target)

或者在lstm单元之间使用dropout,可以考虑如下

model = Sequential()
model.add(LSTM(10, input_shape=(6,4)))
model.add(Dropout(0.5))
model.add(LSTM(10, input_shape=(6,4)))
model.add(Dense(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

print(data.shape) # (1000, 6, 4)
model.fit(data, target)

相关问题 更多 >