社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

Kaggle知识点:深度学习代码规范

AINLP • 3 年前 • 511 次点击  


每一场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)
进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119051
 
511 次点击