我有大约 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.
在将时间序列输入 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 模型添加 dropout
和 attention
层是件好事。如果您认为添加此类层适用于我的问题,请告诉我,如果是,该怎么做? :)
注意:我不限于droupout和attention层,并且很高兴收到可以用来改进模型的其他建议。
如果需要,我很乐意提供更多详细信息。
最佳答案
如果你想在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)
关于python - 如何在python中的kers中的LSTM中添加dropout和attention,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57840199/