简介
本项目使用了 Sleep-EDF 公开数据集的 SC 数据进行实验,一共 153 条整晚的
睡眠记录,使用 Fpz-Cz 通道,采样频率为 100Hz,数据获取与具体数据信息可
前往数据集官网查看:Sleep-EDF Database Expanded v1.0.0 (physionet.org)。
整套代码写的较为简洁,而且有添加相应的注释,因此进行分享,而且不仅仅
说是睡眠分期,也可以作为学习如何使用神经网络去进行时序数据分类问题的
一个入门项目,包括怎么用 GRU、LSTM 和 Attention 这些经典网络结构。
网络结构(具体可查看 network.py 文件):
� 网络整体结构类似于 TinySleepNet,对 RNN 部分进行了修改,增加了
双向 RNN、GRU、Attention 等网络结构,可根据参数进行调整选择。
� 定义了 seq_len 参数,可以更灵活地调整 batch_size 与 seq_len。
数据集加载(具体可查看 dataset.py 文件)
� 直接继承自 torch 的 Dataset,并定义了 seq_len 和 shuffle_seed,方便调整输入,
并复现实验。
训练(具体可查看 train.py 文件):
� 定义并使用了 focal loss 损失函数
� 在实验中有使用 wandb,感觉用起来还挺方便的,非常便于实验记录追溯
测试(具体可查看 test.py 文件):
� 可以输出 accuracy、mf1、recall_confusion_matrics、
precision_confusion_matrics、f1_confusion_matrics 评价指标