- A榜第2、B榜第2
- numpy==1.19.5
- pandas==1.1.5
- scipy==1.5.4
- scikit-learn==0.24.2
- torch==1.7.1+cu101
- tqdm==4.62.3
- iterative-stratification==0.1.7
- 考虑到数据存在不同长度的问题,以多数类长度16001为基准长度,这里采用长度不足16001在末尾补零,长度超过16001的末尾截断的处理。
- 另外考虑到读取csv速度慢,这里完成上述操作之后均转化为mat矩阵文件保存。
- 使用重采样统一将心电信号变为长度6666,并以字典形式保存所有数据,方便快速读取【减少dataset的IO, 以空间换时间】。
把经典的神经网络模型resnet34中的二维卷积修改为一维卷积,并添加注意力模块SE,使用该注意力机制有助于提取通道之间相关性,增强模型性能。
在模型一的基础上添加maxpooling层,将maxpooling层的输出与原网络平均池化的输出拼接,再经过全连接层输出最终结果,提取最大值特征有助于识别心电图的异常。
在模型二的基础上,在模型输入处并行四个大小不同的卷积核,以获取不同感受野的心电图特征,然后将其通过1x1卷积缩减通道数,再将他们拼接起来输出到下一层,模型输出端采用和模型二同样的思路,添加maxpooling层,有助于识别心电图的异常。
在模型三的基础上,在模型输出处添加一个head包含两个全连接层和hardSwish激活函数。
- 以评价指标f1-macro作为早停指标,训练得到总指标得分最高的单模型;
- 以每个类别的f1得分作为保存模型的依据,一次同时保存18个在每个类别中的最佳模型。
- 多模型生成oof以及pred文件(我这里模型很多,把顺序迭代的部分模型都用于集成)
- 使用贝叶斯调参搜索模型权重,最终加权融合
- 根据oof进行阈值后处理(常规操作,百分位提升)
- 根据标签分析进行互斥后处理(千分位提升)
- 安装上述环境
- 把ecg_data以及label_and_example两个文件夹放到当前路径
- 运行命令 sh infer.sh
- 生成提交文件sub_final.csv即为最终提交文件
- 【注】如需重新训练,请将命令中的所有train设置为1
- 训练最多需要约40G内存,12G显存
- 推理最多需要约40G内存,4G显存