信号处理--卷积残差网络实现单通道脑电的睡眠分期监测

目录

背景

亮点

环境配置

数据

方法

结果

代码获取

参考文献


背景

人类大约花三分之一的时间睡觉,这使得监视睡眠成为幸福感的组成部分。 在本文中,提出了用于端到端睡眠阶段的34层深残留的Convnet架构

亮点

使用深度1D CNN残差架构,用于端到端分类, 可以解决训练更深的CNN模型引起的消失梯度问题。 

环境配置

python; tensorflow

数据

Sleep-EDF

方法

使用三十层卷积神经残差网络,实现睡眠分期检测。

主要代码:

 

def res_first(input_tensor, filters=(64,64), kernel_size=16, dropout_rate=0.2, bias=False, maxnorm=4., **kwargs):
    eps = 1.1e-5
    nb_filter1, nb_filter2 = filters
    x = Conv1D(filters=nb_filter1, kernel_initializer=initializers.he_normal(seed=1), kernel_size=kernel_size,
               padding='same', use_bias=bias, kernel_constraint=max_norm(maxnorm))(input_tensor)  ##
    x = BatchNormalization(epsilon=eps, axis=-1)(x)
    x = Scale(axis=-1)(x)
    x = Activation('relu')(x)
    x = Dropout(rate=dropout_rate, seed=1)(x)
    x = Conv1D(filters=nb_filter2, kernel_initializer=initializers.he_normal(seed=1), kernel_size=kernel_size,
               padding='same', use_bias=bias, kernel_constraint=max_norm(maxnorm))(x)  ##
    x = add([x, input_tensor])
    return x


def MyModel(eeg_length=3000, kernel_size=16, bias=False, maxnorm=4., **kwargs):

    '''
    Top model for the CNN
    Add details of module in docstring
        '''

    eps = 1.1e-5

    #inputs = K.placeholder(shape=(batch_size, eeg_length,1))
    #x = Input(dtype= 'float32', shape=(eeg_length,1))
    EEG_input = Input(shape=(eeg_length,1))
    x = Conv1D(filters=64, kernel_size=kernel_size, kernel_initializer=initializers.he_normal(seed=1), padding='same',
               use_bias=bias, kernel_constraint=max_norm(maxnorm))(EEG_input)  ##
    x = BatchNormalization(epsilon=eps, axis=-1)(x)
    x = Scale(axis=-1)(x)
    x = Activation('relu')(x)  #  

    x = res_first(x, filters=[64, 64], kernel_size=kernel_size)
    x = res_subsam(x, filters=[64, 64], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[64, 64], kernel_size=kernel_size)
    x = res_subsam(x, filters=[64, 128], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[128, 128], kernel_size=kernel_size)
    x = res_subsam(x, filters=[128, 128], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[128, 128], kernel_size=kernel_size)
    x = res_subsam(x, filters=[128, 192], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[192, 192], kernel_size=kernel_size)
    x = res_subsam(x, filters=[192, 192], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[192, 192], kernel_size=kernel_size)
    x = res_subsam(x, filters=[192, 256], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[256, 256], kernel_size=kernel_size)
    x = res_subsam(x, filters=[256, 256], kernel_size=kernel_size, subsam=2)
    x = res_nosub(x, filters=[256, 256], kernel_size=kernel_size)
    x = res_subsam(x, filters=[256, 512], kernel_size=kernel_size, subsam=2)
    x = BatchNormalization(epsilon=eps, axis=-1)(x)
    x = Scale(axis=-1)(x)
    x = Activation('relu')(x)
    x = Model(EEG_input,x)
    # tf.keras.backend.eval(x)
    return x

 

结果

所有被试数据按照7:3的比例划分为训练和测试集数据,在单个被试在5分类的任务上,准确率达到91.4%,在6分类任务上,准确率达到90.1%。

代码获取

私信后台 S2

参考文献

L. Cen, Z. L. Yu, Y. Tang, W. Shi, T. Kluge, and W. Ser, “Deep learning method for sleep stage classification,” inInt. Conf. Neural Information Processing, 2017, pp. 796–802

M. Mourtazaev, B. Kemp, A. Zwinderman, and H. Kamphuisen, “Age and gender affect different characteristics of slow waves in the sleep eeg,”Sleep, vol. 18, no. 7, pp. 557–564, 1995.

K. He, X. Zhang, S. Ren, and J. Sun, “Identity mappings in deep residual networks,” inProc. ECCV, 2016, pp. 630–645.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/437737.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XXE-XML实体注入漏洞

目录 1.xml基础 1.1什么是xml 1.2xml文档结构 1.3 什么是DTD 1.4 什么是实体 1.5 什么是外部实体 2.xxe漏洞 2.1xxe漏洞基本介绍 2.2xxe漏洞的危害 经典漏洞案例分析 3.xxe漏洞挖掘和利用 3.1. 识别潜在的XML入口 3.2. 检查XML处理逻辑 3.3. 构造试探Payload 常…

SpringBoot集成Kafka

Kafka是一种基于分布式发布-订阅消息系统的开源软件。 将消息存储在可配置数量的分区中,以便实现横向扩展,并且支持多个生产者和消费者,具有良好的可靠性保证机制。 Kafka还支持数据复制、故障转移和离线数据处理等功能,并被广泛应…

【面试必看!】如何介绍项目,如何陈述工作经历?

“简单介绍一下你的工作经历”,这是很多面试者在面试中遇到的第一个问题。因为现在招聘单位都很看重工作经验,尤其是软件行业,所以我想有必要在这里说一下如何在面试中陈述自己的工作经历。 在“说道理”之前,先举几个小例子&…

备战蓝桥(模板篇)

扩展欧德里几算法 质数筛 分解质因数 LCA BFS floyd Dijkstra prime 日期是否合法 Tire异或 模拟散列表 字符哈希 Tire字符串统计

【Linux篇】gdb的使用

💛不要有太大压力🧡 💛生活不是选择而是热爱🧡 💚文章目录💚 1. 背景知识2. 使用 1. 背景知识 1. 程序发布的方式有两种,debug模式和release模式 2. Linux下,gcc和g编译生成的可执行…

【MybatisPlus】QueryWrapper、UpdateWrappe、LambdaQueryWrapper、LambdaUpdateWrapper

一、Wrapper简介 QueryWrapper、UpdateWrapper、LambdaQueryWrapper 和 LambdaUpdateWrapper 都是 MyBatis-Plus 框架中用于构建条件的工具类,它们之间的关系是继承关系。其中 QueryWrapper 和 UpdateWrapper 是基于普通的对象属性名来构建条件的,而 La…

mongo用命令将csv导入导出数据表

1、准备csv数据 2、新建数据库 数据库名:POIDB,用Robo数据库可视化软件操作的 3、命令行导入csv文件 命令模板 mongoimport --db mydatabase --collection mycollection --type csv --headerline --file data.csv导入kword文件命令,数据…

相机标定实验

相机标定 文章目录 相机标定1 ROS标定1.1安装标定程序1.2 下载标定板1.3 标定1.4 标定结果 2 Kalibr相机标定2.1 下载官方提供的标定板2.2 自定义标定板2.3 cam数据录制2.4 标定2.5 输出结果 3 MATLAB标定3.1 打开工具3.2 添加标定板图片3.3 设置标定参数3.4 生成标定结果3.5 标…

【网络原理】初识网络原理

目录 🎄网络发展史🌸独立模式🌸网络互连🌻局域网LAN🌼基于网线直连🌼基于集线器组建🌼基于交换机组建🌼基于交换机和路由器组建 🌻广域网WAN 🌳网络通信基础&…

如何在小程序中绑定身份证

在小程序中绑定身份证信息是一项常见的需求,特别是在需要进行实名认证或者身份验证的场景下。通过绑定身份证信息,可以提高用户身份的真实性和安全性,同时也为小程序提供了更多的个性化服务和功能。下面就介绍一下怎么在小程序中绑定居民身份…

position定位学习

加了绝对定位的盒子不能通过margin:0 auto水平居中 脱标元素不会产生外边距合并问题

vue svelte solid 虚拟滚动性能对比

前言 由于svelte solid 两大无虚拟DOM框架,由于其性能好,在前端越来越有影响力。 因此本次想要验证,这三个框架关于实现表格虚拟滚动的性能。 比较版本 vue3.4.21svelte4.2.12solid-js1.8.15 比较代码 这里使用了我的 stk-table-vue(np…

Vue3实现页面跳转功能

目标: 首页: 点击About后: 第一步:安装 Vue Router和创建你先 npm install vue-router4第二步:在router.js中设置路由 import { createRouter, createWebHistory } from vue-router; import Home from ./views/Home…

HTML超详细简介

HTML是什么 超文本标记语言(HyperText Mark-up Language )用来设计网页的标记语言用该语言编写的文件,以 .html或 .htm为后缀由浏览器解释执行不区分大小写,建议小写 HTML标签 HTML用于描述功能的符号成为“标签”标签都封装在…

b站小土堆pytorch学习记录—— P25-P26 网络模型的使用和修改、保存和读取

文章目录 一、修改1.方法2.代码 二、保存和读取1.方法2.代码(1)保存(2)加载 3.陷阱 一、修改 1.方法 add_module(name: str, module: Module) -> None name 是要添加的子模块的名称。 module 是要添加的子模块。 调用 add_m…

部署SpringBoot项目

方案一:纯手工部署 1,购买一台云服务器 这里我使用腾讯云,推荐Centos8/Centos7.6 2,安装springBoot项目所需要的环境 1,数据库单独安装在另一台服务器上,只需要修改IP地址即可 2,安装jdk yum…

泛型 --java学习笔记

什么是泛型 定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型 可以理解为扑克牌中的癞子&#xff0c;给它什么类型它就是什么类型 如…

如何将中科方德桌面操作系统加入Windows域

往期文章&#xff1a;自定义SSH客户端连接时的显示信息 | 统信UOS | 麒麟KYLINOS Hello&#xff0c;大家好啊&#xff0c;今天我非常高兴地给大家带来一篇关于如何将中科方德桌面操作系统加入Windows域的教程文章。对于使用中科方德桌面操作系统的用户来说&#xff0c;将其加入…

TSINGSEE配电房/配电站/变电站远程视频智能监管、无人值守方案

一、背景需求分析 随着社会的快速发展和科技进步&#xff0c;电力作为现代社会的核心驱动力&#xff0c;其稳定运行与安全管理变得愈发重要。特别是在配电房这一关键环节中&#xff0c;实施高效的远程视频智能监管方案&#xff0c;不仅能够有效提升电力供应的可靠性&#xff0…

模拟实现std::string类(包含完整、分文件程序)

std库中的string是一个类&#xff0c;对string的模拟实现&#xff0c;既可以复习类的特性&#xff0c;也可以加深对std::string的理解。 &#x1f308;一、搭建框架 ☀️1.新命名空间 本质上string是一个储存在库std里面的类&#xff0c;现在需要模拟实现一个string类&#…