LibEER: A Comprehensive Benchmark and Algorithm Library for EEG-based Emotion Recognition
Project description
算法库组件帮助
1、如何开始?
1).准备好数据集,目前只支持seed数据集本身提供的特征,然后通过命令或修改utils.args中的参数设置好数据集路径:
python main.py -dataset_path YourPath/SEED
或直接修改utils.args.py中的默认参数设置:
2).使用命令在不同的实验设置,数据划分上做任务,目前只支持SEED数据集自身提供的体征:
确定要做的SEED数据集上的实验设置
1、将每个subject的15个trail中的前9个trail分割成的sample作为训练集,后6个trail分割成的sample作为测试集
python main.py -setting 'seed_sub_dependent_front_back_setting'
2、将每个subject的15个trail分为五折,做五折交叉验证(现在是依次按顺序选三个trail作为测试集)
python main.py -setting 'seed_sub_dependent_5fold_setting'
3、使用留一法,每次将1个subject的15个trail分割成的所有sample作为测试集,其他14个subject的15个trail分割成的所有sample作为训练集,循环15次汇报平均结果
python main.py -setting 'seed_sub_independent_setting'
4、三个session的数据,一个作为测试数据集,其余为训练数据
python main.py -setting 'seed_cross_session_setting'
5、自定义设置
对于SEED数据集,某些论文可能只使用了某些session的数据,为了验证复现结果,我们应该在命令行后添加 -sessions session id:
只用了第一个sessions的数据
python main.py -setting 'seed_sub_dependent_front_back_setting' -sessions 1
用了前两个sessions的数据
python main.py -setting 'seed_sub_dependent_front_back_setting' -sessions 1 2
其他特征的使用,原文件中实验设置默认采用SEED数据集提供的经过线性平滑的DE特征,如果你想使用SEED数据集提供的其他特征,使用-dataset:
后跟格式应该为'seed_feature_type'
使用DE特征
python main.py -dataset 'seed_de'
使用PSD特征:
python main.py -dataset 'seed_psd'
可用的特征:
其余特殊情况群上讨论
3)常见参数:
-batch_size int
-epochs int
-device cpu or cuda
-lr
-metrics
#目前实现的有acc, macro-f1, micro-f1
#默认是只用acc, 如果要使用acc和macro-f1
#则在命令后跟上-metrics 'acc' 'marco-f1'
2、算法文件结构
3、如何添加自己的模型
算法库内需要修改处:
1、models文件夹下创建自己的模型文件(一篇论文对应一个)
2、models/Models.py中将自己的模型添加进模型字典中
1)读论文过程中
两个需要注意的点:
1、论文具体实现方法,有无可参考源码
2、实验设置:
a.选用的数据集,怎么进行的预处理
b.实验场景(数据划分)
c.模型超参
2)模型应该规范的参数
a.如果模型输入的数据不是一个序列,则参数的顺序应该按照:
(channels, feature_dim, num_classes, others)摆放
channels是指输入的通道数 feature_dim应该是频段的多少 num_classes是分类数 others是模型的其他超参
b.如果输入的数据是一个序列,则参数的顺序应该按照:
(sample_length, channels, feature_dim, num_classes, get_param, others)摆放
sample_length是输入序列的长度
拿DGCNN举例:
3)自定义参数函数与超参配置文件
为了保证能够自定义参数的设置,方便调整模型的参数
每个模型应该有预设的yaml文件,以及相应地读取参数的函数
yaml文件放置在config/model_param文件夹下 文件大致组织形式为:
相应的读取函数参考:
4)模型的训练函数train_one_round()
因为每个模型的训练方法不同,所以自己要根据自己模型的特殊性来设置独特的训练方式(Loss计算,优化器,调度器等等),给自己模型实现一个函数,起名叫train_one_round,参数如下:
def train_one_round(self, args, round, train_data, train_label, test_data, test_label):
如无很特殊的设置,例如loss值计算,直接抄DGCNN的再改变一些参数即可,
尽量与DGCNN的保持一致,方便后续的工作
需要注意的是该函数需要返回一个字典,记录了每一轮最好的测试结果,格式应该是
{ 'best_acc': acc,
'best_macro-f1': marco-f1,
...
}
参照DGCNN设置就好
以上所有都应该包含在一个文件里面!!!!!
5)将模型添加到models/Models.py的字典当中
示例:
6)明确要跑的实验
明确要跑的实验:
1、论文当中涉及到的关于脑电情感识别的实验
2、我们总结的实验设置
总结好每次实验的超参,确保能复现,包括模型超参,学习率,训练轮次,随机数种子等,只要能调的都要固定住,确保可复现性
代码有些功能不完善,也有一些问题,有什么建议或者问题发到群里或私发,我及时修正。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file libeer-0.1.1.tar.gz
.
File metadata
- Download URL: libeer-0.1.1.tar.gz
- Upload date:
- Size: 66.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58ba3b3398290ddf2691c2b2588aa1b62dca3db7ae9c7e7a8b7caada337156c6 |
|
MD5 | cbfb6947e09d5c67d16c19cc5c64f220 |
|
BLAKE2b-256 | 13b5badab2852e551900f30f7c237cc489cf3c25326dd54db97cf21c4725f766 |
File details
Details for the file LibEER-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: LibEER-0.1.1-py3-none-any.whl
- Upload date:
- Size: 107.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96e39d688a986cee880c5f688a72664e8f010981190f668098cc051b00dc0dbe |
|
MD5 | 48d86f6d1a828559c5ddbf14d956c668 |
|
BLAKE2b-256 | 29fdcbfce330e32d7823c7714055b9276c749f9004b95bd2afda92fe2816c3f8 |