pytorch搭建卷积神经网络cnn处理脑电数据过程代码

本文档介绍了如何使用PyTorch构建卷积神经网络(CNN)处理脑电(EEG)数据,虽然数据量较小导致准确率不高,但主要目的是理解算法结构。作者参考了图像分类的代码,将脑电数据(16维,三维结构)进行处理,涉及到数据预处理、网络结构调整、训练与预测等步骤。代码中包括数据分段、网络搭建、训练和预测四个部分,适合对比学习以理解不同数据维度对模型的影响。
摘要由CSDN通过智能技术生成

参考图像处理的代码,自己对脑电数据进行了应用,数据量比较小,准确率不高,主要为了理解算法结构。

参考文章:https://zhuanlan.zhihu.com/p/115866586

谢谢大佬的分享,代码很清晰,便于理解,但是下载后还是不能直接在我的脑电数据中运行进行处理,主要是数据结构和数据类型不同,需要手动再进行调整。

原文中是对minitst数据进行了图像的分类,训练数据是四维的,有10个标签,脑电数据这里用的三维,并且维度中的数据长度也有影响,所以一定需要对网络结构进行调整,可以两篇文章中的代码对比阅读,更有利于对维度的变化,结构的调整进行理解。

我的脑电是用Matlab采集的,16维的数据和标签保存在结构体数据中,所以在代码的最开始还对数据进行了手动分段

整个代码分为几个部分:准备数据,搭建神经网络,训练数据,预测数据

1.导入包

#导入包
import torch
torch.set_default_tensor_type(torch.FloatTensor)
import numpy as np
import scipy.io
import torch.utils.data as Data
import torch.nn as nn
import torch.nn.functional as F

2.准备数据

#准备数据
# make data
## load eegdata
samplesfile = scipy.io.loadmat('/Users/thrive/Documents/Dong/research/mypaper/code/dataset/rawdata/subject1.mat') #读入字典
eegdata = samplesfile['eeg'] #提取numpy数组,结构体名称是eeg,包含字段有name date data1 marker1 data2 marker2……
print('# test eegdata:',eegdata[0,0]['marker1'][:2,:1],'\n')#打印出来marker1字段看一下

tbase=0.2#基线长度
ttrial=0.5#关注的脑电时间段
fs=1200#采样率

## train data
### epoch data将数据分段
epochdata=np.zeros((20,16,int((tbase+ttrial)*fs)))#初始化一个数组用于存放分段后的脑电数据

i=0
for temp in epochdata:
    epochdata[i,:,:]=eegdata[0,0]['data1'][:,round((eegdata[0,0]['marker1'][i,1]-tbase)*fs):round((eegdata[0,0]['marker1'][i,1]-tbase)*fs)
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油泼西红柿

Wish U Thrive

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值