深度学习系统中的log问题

  • Post author:
  • Post category:其他


在训练模型的过程中,总会进行调参工作。

原则上是,让机器跑,人抽身出来,做更愉悦身心的事。

此时,就可以想办法把调参过程中的参数保留下来,等事后再来观察结果,分析结论。

那么有什么打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



版权声明:本文为qq_29134801原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。