记录EEGnet复现,准确率很有问题,但不知道怎么办
数据集:
BCI competition iv 2a
环境:
pytorch
数据处理:
此处参考https://blog.csdn.net/qq_45713591/article/details/133029944
根据EEGnet论文,对数据进行128Hz重采样,并进行4-40Hz带通滤波,每个事件取0.5-2.5s的数据,每个被试进行4折交叉验证
网络结构:
class EEGNet(nn.Module):
def __init__(self,Chans, T,clas, F1, D, F2 ):
super(EEGNet, self).__init__()
self.drop_out = 0.5
self.block_1 = nn.Sequential(
nn.Conv2d(
in_channels=1,
out_channels=F1,
kernel_size=(1, 32),
bias=False,
padding='same'
),
nn.BatchNorm2d(F1)
)
self.block_2 = nn.Sequential(
nn.Conv2d(
in_channels=F1,
out_channels=D*F1,
kernel_size=(Chans, 1),
groups=F1,
bias=False,
padding='valid'
),
nn.BatchNorm2d(D*F1),
nn.ELU(),
nn.AvgPool2d((1, 4)),
nn.Dropout(self.drop_out)
)
self.block_3 = nn.Sequential(
nn.Conv2d(
in_channels=D*F1,
out_channels=D*F1,
kernel_size=(1, 16),
groups=D*F1,
bias=False,
padding='same'
),
nn.Conv2d(
in_channels=D*F1,
out_channels=F2,
kernel_size=(1, 1),
bias=False,
padding='same'
),
nn.BatchNorm2d(F2),
nn.ELU(),
nn.AvgPool2d((1, 8)),
nn.Dropout(self.drop_out)
)
self.out = nn.Linear((F2 * (T//32)), clas)
def forward(self, x):
x = self.block_1(x)
x = self.block_2(x)
x = self.block_3(x)
x = x.view(x.size(0), -1)
x = self.out(x)
return x
结果:
只有几个被试准确率正常,不知道原因,求大佬教