经验贴:老少皆宜的deep learning模板

〇、深度学习入门

很多童鞋在入门深度学习时,遇到的最大的一个问题就是,论文读懂了,代码看不懂,写不好,跑不起来。关于这一点,我的建议就是多读多写

多读是指多读别人写的代码,明白别人代码的组织结构,每一步在干什么,为什么要这样写;在这个过程中也会逐渐熟悉各种常用的函数及库,例如numpy, pandas, pytorch等等。

多写是指多自己去尝试写代码,把常见的坑都踩一遍,自然对于代码的理解就会更深刻。

而这个过程中,一个好的模板是非常重要的。理解模板本身有利于新手搭建一个合理、清晰、易懂的逻辑框架,帮助新手少走很多弯路。因此,我最近开源了一个我自己比较常用的deep learning模板,链接在这:Template,感兴趣的同学们可以自行下载并阅读,有问题可以随时与我联系~

一、简单介绍模板

对于一个deep learning projects来说,我认为主要可分为以下几个部分:

  • 数据(data),这部分的主要内容是读取数据,预处理数据,构建数据集等。
  • 模型(model),这部分的主要内容是搭建一个模型框架,从数学上来说就是建立一个从数据空间到结果空间的映射。例如,输入一个句子,输出这个句子的情感值(0-1),就是建立了一个从句子空间到实数空间的映射。
  • 训练(training),这部分的主要内容是使用数据来训练模型。
  • 评测(evaluation),这部分的主要内容是对训练好的模型进行评估,通常使用某些特定的指标。

在实际应用中,除以上部分外还需要其他的组件,例如推理/部署等。但本模板仅面向学术,我们只需要关注于以上几个部分即可。

那么对于一个新手来说,一个合适的coding顺序是,data -> model -> training -> evaluation。先确定好数据的格式,才能确定模型的输入;确定好模型的输出,才能确定training的范式;确定好训练的各个细节,才能对模型做评测。

在模板中,data部分被定义在data.py,模型部分定义在model文件夹之中,训练部分定义在manager.trainer.py之中,评测部分定义在manager.evaluator.py之中。而整个project所需的各种参数,都被定义在util.py之中.