在训练模型的过程中,总会进行调参工作。
原则上是,让机器跑,人抽身出来,做更愉悦身心的事。
此时,就可以想办法把调参过程中的参数保留下来,等事后再来观察结果,分析结论。
那么有什么打LOG的方法呢?
1. 首先是利用第三方工具,logging,去打log。
但这种方法要求你在代码中要定义相应的logging。
比如logging.info(“这是一条log”)
假设用第三方的代码,人家用print输出,那你就毫无办法了。
2. 其次是利用自带的工具,比如tensorflow中自己会自带一些打log的工具。
而我这一次使用的Chainer,也有自己的log组件。
trainer.extend(extensions.LogReport(log_name="log_file.txt"))
可是这个log组件,并不好用,它只能存储上一次的log_file,也就是最近一次运行的log。
我没有在文档里发现解决只能存储最后一次的方案,并且,其输出模式受到限制。
或许重写是个好办法。
3. 第三种是文件重定向的方法。
比如说用>> 方法,将print的信息直接输出到文档中去。
但这种方法付出的代价是不能在输出中看到print的信息,那有的时候,我们想要同时观察,那就只能打开log文件。
有个方法是 tee 命令,然而问题是,在我这里它是无效的!无效的!有解决方案请联系我。
4. 第四种是tmux的方法。
用tmux这个工具可以解决这个问题,因为我们可以用control + b +【 去查看相应的存储区的记录。
可惜,这个记录是有限的,大伙可以调控,2000行,5000行都可以。如果超了,就没记录了。
那么只要将所有记录保存在文件中就行了。
在进入tmux的某个session之后,用如下代码,就可以将其保存了。
记住,一定要在前面加tmux,并且,一定要有exec cat >> ,直接的路径,在我这里,是没有保存的。(或许有,在整个计算机里搜索一下,我没有做这件事。)
tmux pipe-pane -o "exec cat >> /home/guowei/contextual_augmentation/log1.txt"
祝好: 联系方式:945786604@qq.com