【深度学习】深度学习代码规范

每一场Kaggle比赛都一个项目,代码则需要按照规范进行整理。项目规范方便后续的沟通、迭代,非常关键。本文将对竞赛和深度学习通用项目的规范细节进行整理。

步骤1:确定代码框架

首先确定好具体任务,然后根据任务选择合适的框架,如PyTorch LightningMMDection

如果框架有默认目录,则遵守。否则可以创建适合自己的目录,一般而言目录推荐如下:

  • general:常见的训练过程、保存加载模型过程,与具体任务相关的代码。
  • layers:模型定义、损失函数等;
  • experiments:具体任务的训练流程、数据读取和验证过程;
general/
│   train.py
│   task.py
│   mutils.py
layers/
experiments/
│   task1/
│        train.py
│        task.py
│        eval.py
│        dataset.py
│   task2/
│        train.py
│        task.py
│        eval.py
│        dataset.py

步骤2:定义命令行解析

Notebook虽然很好用,但是具体.py代码实际运行和管理更加方便。所以命令行解析就非常关键。

你可以选择自己喜欢的参数解析器,在命令行中一般推荐加入学习率、batch、seed等超参数。

python train.py --learning ... --seed ... --hidden_size ...

步骤3:确定调参工具

在调试和训练模型的过程中,肯定需要多次训练,此时TensorBoard可以非常好的管理实验日志。

调参是非常乏味的,比较重要的是确定好学习率batch size。学习率和优化器有非常多的选择,SGD是一个比较好的开始。一般而言模型越深,学习率越小。batch size越大,学习率越大。

步骤4:减少随机性

深度学习模型有一定的随机性,模型是否可复现非常重要。在比赛期间,非常推荐提前把不同fold的次序存储到文件,减少随机性。

把配置文件、模型权重、日志文件保存好,这样每次都可以进行实验对比。

  • Pytorch设置SEED
torch.manual_seed(SEED)
torch.cuda.manual_seed_all(SEED)
np.random.seed(SEED)
random.seed(SEED)
torch.backends.cudnn.deterministic = True
  • TF 1.X设置SEED
from tfdeterminism import patch
patch()
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.set_random_seed(SEED)
  • TF 2.X设置SEED
os.environ['TF_DETERMINISTIC_OPS'] = '1'
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.random.set_seed(SEED)



相关推荐

  • 【学术相关】为什么我感觉国内博士毕业手里的paper普遍比国外博士多?
  • 使用 TiDE 进行时间序列预测
  • AI泡沫将破,AI公司的商业化何去何从?
  • 深度解析|为何这个赛道竟能诞生百亿美金的公司?
  • 利用知识图谱检测并修正大模型幻觉:GraphEval策略的简单粗暴实现思路
  • 智慧教育+大模型:技术与应用
  • 全网祝贺!Andrej Karpathy官宣创业:是自己热爱的AI+教育
  • 王者归来!LSTM 终于爆发了。。。
  • 面了一个字节60K后端大佬,见识到了基础天花板!
  • Dubbo的核心流程
  • 前端必备技能。。。
  • 代码合并分支用rebase还是merge?
  • 把 Canvas 放到 WebWorker 中去绘制?想都不敢想有多爽!
  • 腾讯文档助力业务提效的100种玩法!TVP吐槽大会邀您来探索
  • 一文搞懂大模型!基础知识、 LLM 应用、 RAG 、 Agent 与未来发展
  • 3 秒极速删除 node_modules,无需第三方工具!
  • 封装WebSocket消息推送,干翻Ajax轮询方式
  • 北漂7年,归来仍是牛马
  • Mistral AI两连发:7B数学推理专用、Mamba2架构代码大模型
  • CCL2024持续注册 | 第二十三届中国计算语言大会全日程公开