深度学习写代码时的一些好习惯,如何高效的炼丹

引言

当我们开始着手一个工程或者一个项目时,总是很着急的想去开始写代码,但是我们做工程需要有一个良好的习惯,这样不仅写代码顺利,心情也会跟着变得好起来。所以我们应该养成一个良好的写代码的习惯,下面说一下通过我自己的经历和查阅资料所得到的经验。

1. 形成良好的工程化习惯

1.1自己要习惯生成一个参数配置文件

我一开始也是将所有的超参数还有网络的设计配置,**函数的选择等等。我们可以单独弄一个文件config.py,这样我们每次更改超参数只是需要更改设置文件就可以了,不需要进入工程里繁琐的修改,这是我的一个config.py示例:
深度学习写代码时的一些好习惯,如何高效的炼丹

1.2 数据集文件夹

一般来说,我们的数据集文件都是很大的。建议在服务器中单独将数据集放在一个文件夹里。另外,工程中的数据路径建议使用相对路径而非绝对路径!!绝对路径会导致你的工程文件夹换个地方就报错。

1.3 网络模型结构

一般来说小模型我们单独写在一个py文件里就可以,但是对于一些结构很多的大模型文件,我们建议用多个子模型py文件,最后整合成一个大的模型,这样也方便修改。

1.4 小样本入手训练

确定好了思路开始跑实验验证,记住首先要小样本(少量的数据)测试自己的算法是否work,看一下有没有初步的效果。切忌一股脑成千上万开始训练,训了半天发现那个地方有疏忽又从头开始训练。包括很多实验的消融实验可以以在小样本上进行。

2. 我们写代码时的好习惯

2.1 良好的命名习惯

这个就不用多说了,作为一个程序猿最基本的常识了,至少看到这个名字后你知道他是干什么,这样可以提高代码的可读性。

2.2 习惯创建及使用函数

把自己自定义的类和方法统一放到一个地方,增加模块的复用性。

2.3 学习大佬的良好代码风格

多去看看名家的代码对自己是很有裨益的,甚至没事的时候可以跟着敲一敲练手。那么总结一下大佬的代码会发现人家的代码风格基本上遵循Google代码规范,而且有命名优雅、注释详细、函数之间耦合性低、逻辑清晰等优点。这些东西一时半会培养不来,但是平时注意培养代码风格习惯,日积月累肯定会有提高的。

3. 试验记录的好习惯

3.1 模型存储

我们可以单独创建一个文件夹log用来储存跑过的模型,每个模型的命名不要太随意,否则看起来乱糟糟的,可以以模型类型+时间戳命名。

3.2 训练loss日志

这个应该都会注意了,也是要注意命名格式了。可以以模型类型+时间戳命名。另外我们模型都会有不同的超参数配置,建议跟随日志一起生成个cfg文件,表明超参数的设置。
深度学习写代码时的一些好习惯,如何高效的炼丹

3.3 Tensorboard

建议使用Tensorboard,因为现在tf和pytorch都支持这个工具,用起来也很简单,因此强烈推荐使用,后面我会详细介绍Ta的使用。