首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Keras询问EEG分类建议

使用Keras询问EEG分类建议
EN

Stack Overflow用户
提问于 2021-04-24 05:01:51
回答 1查看 69关注 0票数 0

我有一个脑电图的数据集,形状是这样的:

代码语言:javascript
复制
(11,1158, 200)

哪里

代码语言:javascript
复制
11 is the number of EEG channel
1158 is the number of each task
200 is the time interval of each task

例如,如果绘制一项任务,您将得到(请注意,数据已标准化):

此任务表示具有类的任务。(例如,看到来自类2的图片,而我的数据集中的类总数是5)。

现在我将我的数组转换为这个形状:

代码语言:javascript
复制
(1158, 200, 11)

这样模型就可以区分每项任务。这是我使用的模型:

代码语言:javascript
复制
opt = keras.optimizers.Adam(learning_rate=1e-4)

model = Sequential()
model.add(Conv1D(filters=128, kernel_size=64, activation='relu', input_shape=(200, 11)))
model.add(Conv1D(filters=64, kernel_size=8, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(5, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
model.fit(x_train, y_train, validation_data=(x_valid,y_valid), epochs=50, batch_size=16)

我尝试了许多不同的超参数,但我所有的结果都有点像这样:

代码语言:javascript
复制
Epoch 50/50
58/58 [==============================] - 0s 5ms/step - loss: 0.1281 - accuracy: 0.9946 - val_loss: 2.7850 - val_accuracy: 0.1897

训练精度很高,但验证精度在20%到25%之间(100/5 = 20,其中5是类数);这基本上意味着模型预测了一些随机的东西。我的方法是错的吗?如果是这样,我应该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2021-04-24 05:47:09

由于您的数据本质上是一个时间序列分类问题,因此我的直觉是从基于LSTM的东西开始。

不幸的是,我的第二个见解与数据大小有关。你的特征空间是200x11=2200,样本大小是1158。我倾向于考虑使用深度学习,如果样本大小>5 *特征大小,但真的认为DL开始闪耀在10倍左右的比率。如果收集更多数据不是一个现实的可能性,那么您将需要考虑具有高方差问题的其他解决方案(对于可用的数据级别,模型太复杂)。

第三,我可以评论说,您的数据形状在我看来是正确的,假设您对验证集进行了标准化,并与您的训练集进行了等价的整形,那么这可能不是问题。

编辑:我刚刚注意到训练的最后阶段显示训练样本为58/58。该值表示训练集中的样本数。这是你所期待的吗?我原本希望样本的数量是你的EG810/810总样本的70%。如果你不确定我在问什么,请贴上y_train和y_valid的大小。这可能会帮助我和其他人验证培训过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67236791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档