效率提升是极为重要的事情,我们的时间本来就不充裕,不应该过多将时间浪费在调试过程中。对于大型项目光有dubug是不够的,如果需要提高产品调试进度,必须需要采取一些其他的方法,这里打算利用python的特性以及一些规范方法来说明一下,当然类似的方法不仅仅可以用于python,其他编程语言也是通用的。
注意,我们要吸收的不是方法,而是思想。
使用assert断言来判断代码是否正常运行
assert断言从C语言中就已经有了,在C++中也经常使用。当然python语言也继承了这个特性。总体来说assert就是首先假设一个语句没有问题,如果有问题则抛出Assert异常。
断言一般用于在调试中使用,也就是用于debug代码的时候。个人建议写在一眼看不出来是否正确需要仔细检查的部分,比如:
当然Assert断言操作也不是越多越好,容易造成程序的混乱和效率问题,总之我们可以在一些重要的数据,需要作注释来检查的地方使用断言进行替代,可以有效对代码进行调试。
更加详细阅读:http://blog.jobbole.com/76285/
使用tqdm来代替print显示结果
tqdm是一个比python自带的原生的print打印函数打印信息更好的打印进度工具。
下面的动图来源自官网。
看起来比我们普通使用print打印更加“好看一些”,其实使用这个工具主要作用在于时间预测和速度估计,在训练的时候可以自己设定一个速度的标准,然后在训练的时候可以通过观察速度变化做出一些判断,或者根据估计出来的需要时间来估计训练所需要的时间。
项目地址:https://github.com/tqdm/tqdm
在训练中保存记录log
保存Log记录是很重要的,我们不应当只在训练中实时观察输出结果,也应该在训练过程中对中间数据进行统计。一般是将每一次训练的时间、训练参数、以及训练结果打包放到一个目录下,目录的名称根据训练参数和结果而定,保证之后的查阅方便以及便于分析:
参数使用字典或者list包含起来或者使用命令进行输入
如果训练参数数量多,建议将训练参数写成字典的形式:
也可以使用命令行参数的功能单独对特定的参数进行调整:
关于如何使用命令行参数:https://oldpan.me/archives/argparse-python-order-command
使用git进行版本控制
git不多说,版本控制神器,不管是公司中正式的项目代码还是你个人使用的练习项目,使用git的的好处都是不言而喻。
我们还可以通过使用python中的subprocess模块来自动执行git命令来获取当前的commot信息从而让我们对我们代码的版本和修改过程有一个直观的过程。
注意
好的习惯并不能直接帮助我们提高效率,需要我们在习惯这些技巧的过程中逐渐掌握一些窍门。另外,虽然这些方法需要我们投入时间去学习,但是如果熟练了这些技巧,对调试程序的好处是巨大的。
关注Oldpan博客,同步更新博客最新消息,持续酝酿深度学习质量文。
领取专属 10元无门槛券
私享最新 技术干货