Adi*_*dre 5 python machine-learning deep-learning conv-neural-network pytorch
我正在尝试根据 EEG 连接组数据识别 3(类)心理状态。数据的shape是99x1x34x34x50x130(原来是图形数据,现在用矩阵表示),分别代表[主题、通道、高度、宽度、频率、时间序列]。为了这项研究,只能输入连接组数据的 1x34x34 图像。从之前的研究中,发现 alpha 波段(8-1 hz)提供了最多的信息,因此数据集被缩小到 99x1x34x34x4x130。先前机器学习技术(如 SVM)的测试集准确度达到了约 75% 的测试准确度。因此,目标是在给定相同数据 (1x34x34) 的情况下实现更高的精度。由于我的数据非常有限,1-66 用于训练,66-99 用于测试(固定比率和 1/3 类分布),我想沿时间序列轴(第 6 轴)拆分数据,然后将数据平均为 1x34x34 的形状(例如 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
)
Run Code Online (Sandbox Code Playgroud)
结果:训练集可以通过足够的迭代达到 100% 的准确度,但以牺牲测试集的准确度为代价。经过大约 20-50 轮测试后,模型开始过度拟合训练集,测试集精度开始下降(与损失相同)。
我试过的:我试过调整超参数:lr=.001-000001,权重衰减=0.0001-0.00001。训练到 1000 个 epochs(在 100 个 epochs 内没有用的 bc 过拟合)。我还尝试通过在 8-64 层的 CNN 层中添加额外的 fc 层和不同数量的通道来增加/降低模型复杂性。我还尝试添加更多的 CNN 层,并且该模型在测试集上的平均准确度约为 45%,但表现稍差。我尝试每 10 个 epoch 手动安排一次学习率,结果是一样的。重量衰减似乎对结果没有太大影响,将其从 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
Run Code Online (Sandbox Code Playgroud)
每个图像的预测之间整个测试集的平均标准偏差为 (softmax):
0.017695341517654846
Run Code Online (Sandbox Code Playgroud)
然而,训练集的平均标准是.22
如此......
F1分数:
Micro Average: 0.6060606060606061
Macro Average: 0.5810185185185186
Weighted Average: 0.5810185185185186
Scores for each class: 0.6875 0.5 0.55555556
Run Code Online (Sandbox Code Playgroud)
小智 3
我有一些建议,我会尝试什么,也许你已经做到了:
归档时间: |
|
查看次数: |
384 次 |
最近记录: |