【发布时间】:2021-04-23 21:01:51
【问题描述】:
我有一个关于脑电图的数据集,形状如下:
(11,1158, 200)
在哪里
11 is the number of EEG channel
1158 is the number of each task
200 is the time interval of each task
例如,如果你绘制一个任务,你会得到(注意数据是标准化的):
此任务表示具有类的任务。 (例如看到第 2 类的图片,我的数据集中的类总数为 5)。
现在我将数组转换为这个形状:
(1158, 200, 11)
这样模型就可以区分每个任务。这是我使用的模型:
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)
我尝试了许多不同的超参数,但我的所有结果都有点像这样:
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 是类数);这基本上意味着模型预测的东西是随机的。我的方法错了吗?如果是这样,我应该如何解决这个问题?
【问题讨论】:
-
您应该指定训练中使用的样本数量。
标签: python tensorflow machine-learning keras neuroscience