我使用与pip install
一起安装的tensorflow 1.2.0
。
当我检测包括
import logging
tf.logging.set_verbosity(tf.logging.INFO)
表单的日志记录消息
logging.info('TEST')
即使有标志--tostderr
,也不会出现在终端输出中。
根据this answer我也试过
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
但问题依然存在,有什么想法吗
我使用与pip install
一起安装的tensorflow 1.2.0
。
当我检测包括
import logging
tf.logging.set_verbosity(tf.logging.INFO)
表单的日志记录消息
logging.info('TEST')
即使有标志--tostderr
,也不会出现在终端输出中。
根据this answer我也试过
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
但问题依然存在,有什么想法吗
4条答案
按热度按时间h7wcgrx31#
TF日志记录基础:
所以关于tensorflow日志记录有很多困惑,而且它真的没有很好的文档记录。我在搜索中登陆过几次,所以它似乎是一个发布答案的好地方。
经过对Ubuntu和Windows的一些研究和实验(比我计划的要多),这是我得到的:
有两个标志,名称相似,但语义略有不同:
TF_CPP_MIN_LOG_LEVEL
-具有3或4个基本级别-低数字=更多消息。0
输出信息、警告、错误和致命(默认值)1
输出警告及以上2
输出错误及以上。TF_CPP_MIN_VLOG_LEVEL
-这会导致非常非常多的额外 * 信息 * 错误-实际上只是为了调试-低数字=更少的消息。3
输出很多很多东西2
输出更少1
输出更少0
无额外输出(默认)补充说明:
python tf-program.py &>mylog.log
os
模块获取,因此您应该能够在环境中设置它们Windows:
os
模块没有在Windows下拾取它们。Python从来不喜欢Windows...import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
os.environ['TF_CPP_MIN_VLOG_LEVEL'] = '3'
import tensorflow as tf
Linux:
TF_CPP_MIN_VLOG_LEVEL=3 python tf-program.py
FWIW,我在TensorFlow 1.7上测试了这个教程:
它看起来是这样的:
toiithl62#
在tensorflow中实际上有两个日志系统:一个在C核心(具体来说是tensorflow/core/platform/default/logging.{h,cc}),另一个在Python绑定中。这两个系统是独立的。
Python绑定中的一个与标准Python日志模块配合得很好。C日志记录器由前面的答案中提到的
TF_CPP_MIN_LOG_LEVEL
环境变量独立控制。下面的Python(我在本地称之为logtest.py)演示了这两个系统的独立性。
跑...
TF_CPP_MIN_LOG_LEVEL=0 python3 logtest.py -v CRITICAL
...表明Python不能使核心日志记录系统静默,并且
TF_CPP_MIN_LOG_LEVEL=5 python3 logtest.py -v DEBUG
...表明核心系统无法让Python沉默。
gab6jxml3#
我通常控制TensorFlow日志记录的方法是在任何TensorFlow导入之前拥有这段代码
我很乐意听到任何更好的解决方案。
r1wp621o4#
我试图设置TF_CPP_MIN_LOG_LEVEL,但仍然不起作用。检查此线程后https://github.com/tensorflow/tensorflow/issues/1258
正如它所说
它是TF_CPP_MIN_VLOG_LEVEL,而不是TF_CPP_MIN_LOG_LEVEL此外,请注意,如果设置了TF_CPP_MIN_LOG_LEVEL,则TF_CPP_MIN_VLOG_LEVEL值将被忽略
然后我取消设置TF_CPP_MIN_LOG_LEVEL并再次设置TF_CPP_MIN_VLOG_LEVEL,它工作。
这两个宏让我很困惑,希望对你有帮助。