EEGnet复现记录

记录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

结果:

在这里插入图片描述只有几个被试准确率正常,不知道原因,求大佬教

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EEGNet是一种用于处理脑电图(Electroencephalogram,简称EEG)数据的深度学习网络。在MATLAB中实EEGNet需要以下步骤。 首先,我们需要导入所需的MATLAB工具箱,包括Deep Learning Toolbox, Signal Processing Toolbox以及其他辅助工具箱。 在导入工具箱后,我们需要定义EEGNet的网络结构。EEGNet由两个子网络组成,分别为ShallowNet和DeepNet。ShallowNet通常用于提取时频特征,而DeepNet则用于提取时空特征。这两个子网络都包含连续卷积层(Convolutional Layers)以及池化层(Pooling Layers)。在定义网络结构时,我们需要指定每个层的输入和输出大小,激活函数的类型,以及其他超参数。 接下来,我们可以使用MATLAB提供的训练函数来训练EEGNet。在训练过程中,我们需要使用已标记的EEG数据作为训练集,并指定优化算法、学习率以及其他训练参数。通过迭代训练,EEGNet可以学习到从原始EEG信号中提取出有用信息的特征。 在训练完成后,我们可以使用已训练的EEGNet来预测未标记的EEG数据。对于新的EEG样本,我们需要对其进行预处理,例如去噪、滤波以及标准化等。然后,我们可以将预处理后的EEG数据输入到EEGNet中,并获得对应的预测结果。 最后,我们可以使用评估指标(如准确率、召回率等)来评估EEGNet的性能。这些评估指标可以帮助我们了解EEGNet在不同EEG任务(如脑机接口、情绪识别等)上的表。如果需要改进EEGNet的性能,我们可以调整网络结构、训练参数以及其他超参数来进行优化。 综上所述,MATLAB中实EEGNet需要导入工具箱、定义网络结构、训练网络、预测和评估结果。通过这些步骤,我们可以利用EEGNet来处理脑电图数据,并实各种EEG相关的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值