我使用.order(members_count: :desc)
安装了tensorflow 1.2.0
。
当我运行包含
的样本时pip install
表单的日志消息
import logging
tf.logging.set_verbosity(tf.logging.INFO)
即使标志为logging.info('TEST')
。,也不会出现在终端输出中
根据this answer,我也试过了
--tostderr
但问题仍然存在。有什么想法吗?
答案 0 :(得分:8)
因此,在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
模块选取,以便您能够在环境中设置它们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
TF_CPP_MIN_VLOG_LEVEL=3 python tf-program.py
FWIW,我使用本教程在TensorFlow 1.7上进行了测试:
https://github.com/tensorflow/models/tree/master/tutorials/image/mnist
这就是它的样子:
答案 1 :(得分:1)
我通常采取的控制TensorFlow日志记录的方法是在任何TensorFlow导入之前使用这段代码
import os
import logging
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
logging.getLogger("tensorflow").setLevel(logging.WARNING)
import tensorflow as tf
我很高兴听到任何更好的解决方案。
答案 2 :(得分:1)
tensorflow中确实有两个日志系统:一个在C ++核心(特别是tensorflow / core / platform / default / logging。{h,cc}),另一个在Python绑定中。 这两个系统是独立的。
Python绑定中的一个与标准Python日志记录模块很好地配合。 C ++记录器由前面答案中提到的TF_CPP_MIN_LOG_LEVEL
环境变量独立控制。
以下Python(我在本地称为logtest.py)演示了两个系统的独立性。
"""
Demonstrate independence of TensorFlow's two logging subsystems.
"""
import argparse
import tensorflow as tf
import logging
_logger = logging.getLogger( "tensorflow" )
parser = argparse.ArgumentParser( description="Demo TensorFlow logging" )
parser.add_argument("-v","--verbosity",
default="",
choices=['DEBUG','INFO','WARNING','ERROR','CRITICAL'],
help="One of {DEBUG,INFO,WARNING,ERROR,CRITICAL}" )
args = parser.parse_args()
print( "Initial Python effective log level:", _logger.getEffectiveLevel() )
# If user provided an explicit Python level, set it.
if args.verbosity:
_logger.setLevel( args.verbosity )
print( " ...new Python effective log level:", _logger.getEffectiveLevel() ) # ...and confirm the change.
_logger.debug( " DEBUG messages are emitted" )
_logger.info( " INFO messages are emitted" )
_logger.warn( " WARNING messages are emitted" )
_logger.error( " ERROR messages are emitted" )
_logger.critical( "CRITICAL messages are emitted" )
with tf.Session() as s:
pass # ...just to trigger TensorFlow into action to generate logging.
...运行
TF_CPP_MIN_LOG_LEVEL=0 python3 logtest.py -v CRITICAL
...表明Python无法使核心日志记录系统沉默,并且
TF_CPP_MIN_LOG_LEVEL=5 python3 logtest.py -v DEBUG
...表明核心系统无法使Python沉默。
答案 3 :(得分:0)
我尝试设置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, 可以。
这两个宏让我感到困惑 希望对您有帮助。