我正在尝试根据脑电连接体数据识别3种(类)精神状态。数据的形状是99x1x34x34x50x130 (最初是图形数据,但现在表示为矩阵),分别表示对象、通道、高度、宽度、频率、时间序列。为了进行本研究,只能输入1x34x34图像的连接体数据。从以前的研究中发现,α波段(8-1 hz)提供了最多的信息,因此数据集被缩小到99x1x34x34x4x130。支持向量机等传统机器学习技术的测试集准确率达到75%左右。因此,by的目标是在给定相同数据(1x34x34)的情况下实现更高的精度。由于我的数据非常有限,1-66用于训练,66-99用于测试(固定比率和1/3类分布),我想沿着时间序列轴(第6轴)拆分数据,然后将数据平均为1x34x34的形状(来自ex。1x34x34x4x10,10是时间序列的随机样本)。这给了我大约1500个样本用于训练,33个样本用于测试(测试是固定的,类分布是1/3)。
型号:
SimpleCNN(
(conv1): Conv2d(1, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(conv2): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(drop1): Dropout(p=0.25, inplace=False)
(fc1): Linear(in_features=9248, out_features=128, bias=True)
(drop2): Dropout(p=0.5, inplace=False)
(fc2): Linear(in_features=128, out_features=3, bias=True)
)
CrossEntropyLoss()
Adam (
Parameter Group 0
amsgrad: False
betas: (0.9, 0.999)
eps: 1e-08
lr: 5e-06
weight_decay: 0.0001
)结果:通过足够的迭代,训练集可以达到100%的准确率,但代价是测试集的准确率。经过大约20-50个时期的测试后,模型开始过度拟合训练集,测试集精度开始下降(损失也是如此)。

我试过的方法:我试着调优超参数: lr=.001-000001,weight decay=0.0001-0.00001。训练到1000个时期(在不到100个时期内无用的bc过拟合)。我还尝试通过添加fc层和CNN层中不同数量的通道来增加/降低模型复杂度,从8-64。我还尝试添加更多的CNN层,但模型在测试集上的平均准确率约为45%,表现稍差。我尝试手动计划每10个时期的学习率,结果是相同的。重量衰减似乎对结果影响不大,从0.1%到0.000001。
从以前的测试中,我有一个模型,在测试和训练集上都达到了60%的访问率。然而,当我尝试重新训练它时,两个集合(训练和测试)的acc立即下降到~40,这是没有意义的。我已经尝试将学习率从0.01%改变到0.00000001,并为此尝试了权重衰减。
从模型和图表的训练来看,模型似乎不知道它在前5-10个时期做了什么,然后开始快速学习,在两个集合上都有大约50%-60%的acc。这就是模型开始过度拟合的地方,从那里开始,模型在训练集上的acc增加到100%,而测试集的acc下降到33%,这相当于猜测。
有什么建议吗?
编辑:
测试集的模型输出彼此非常非常接近。
0.33960407972335815, 0.311821848154068, 0.34857410192489624每个图像的预测之间的整个测试集的平均标准差为(softmax):
0.017695341517654846然而,训练集的平均标准差是.22,所以...
F1分数:
Micro Average: 0.6060606060606061
Macro Average: 0.5810185185185186
Weighted Average: 0.5810185185185186
Scores for each class: 0.6875 0.5 0.55555556这是一个混淆矩阵:

发布于 2020-09-23 06:40:52
我有一些建议,我会尝试的,也许你已经做到了:
https://stackoverflow.com/questions/63983710
复制相似问题