gpt4 book ai didi

python - LSTM 过度拟合但验证准确性没有提高

转载 作者:行者123 更新时间:2023-11-30 09:18:27 39 4
gpt4 key购买 nike

我想做的任务是将 EEG 信号分为 4 种可能的类别。数据被分为试验。受试者被要求考虑做四个 Action 中的一个,分类任务是根据脑电图信号预测他们在想什么。

我有大约 2500 次试验。对于每个试验,有 22 个 EEG 传感器输入 channel 和 1000 个时间步长。我的基线是单层 MLP,验证准确率约为 45%。

由于 keras LSTM 需要 y 的 one-hot 编码向量,因此我在训练之前将 0,1,2,3 映射到其相应的 one-hot 编码 (y_total_new)。起初,我手动创建了 80/20 的训练/测试分割,但随后选择让 keras 进行分割 (validation_split=0.2)。

这是我的第一个 LSTM 实验。我一开始选择了 100 个单位。我添加了一个带有四个神经元的全连接层,以便映射到输出类,并使用 categorical_crossentropy 作为我的损失函数。到目前为止,使用 LSTM,我无法获得超过 25% 的验证准确度。如果我运行以下代码 50 个时期而不是 3 个时期,则 LSTM 会过度拟合数据,但验证精度保持在 0.25 左右。

由于这是我第一次使用 LSTM,我想知道是否有人可以深入了解我可能错过的设计线索或为我指明正确的方向。

from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.layers import Embedding
from keras.layers import LSTM


time_steps = 1000
n_features = 22

model = Sequential()
model.add(LSTM(1000, return_sequences=False, input_shape=(time_steps, n_features)))
model.add(Dropout(0.2))
model.add(Dense(22, activation='tanh'))
model.add(Dense(4, activation='sigmoid'))

model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])

model.fit(X, y_total_new, validation_split=0.2, batch_size=16, epochs=50)
#score = model.evaluate(X_test, y_test_new, batch_size=16)

最佳答案

您是否尝试过添加卷积层作为模型的第一层?我现在正在使用这种方法将 EMG 信号分为 53 类。卷积层应该自动从数据中学习特征,并将这些特征输入到 LSTM 层。有几种可能的架构,DeepConvLstm 是其中之一:

DeepConvLstmArch

DeepConvLstm论文:www.mdpi.com/1424-8220/16/1/115/htm

关于python - LSTM 过度拟合但验证准确性没有提高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49202007/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com