Tensorflow日志消息不出现

dim*_*_tz 6 python logging error-logging tensorflow

我使用tensorflow 1.2.0与一起安装pip install

当我运行包含以下内容的示例时

import logging
tf.logging.set_verbosity(tf.logging.INFO)
Run Code Online (Sandbox Code Playgroud)

表单的日志消息

logging.info('TEST')
Run Code Online (Sandbox Code Playgroud)

即使带有标志,也不会出现在终端输出中--tostderr

根据这个答案我也试过了

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在。有任何想法吗?

Mik*_*ise 11

TF记录基础:

因此,关于tensorflow日志记录存在很多混乱,并且它的记录确实不够完善。我在搜索中登陆了几次,因此似乎是发布答案的好地方。

经过对Ubuntu和Windows的研究和试验(超出了我的计划),这就是我得到的:

有两个标志,名称相似,但语义有所不同:

  • TF_CPP_MIN_LOG_LEVEL-具有3或4个基本级别- 数字低=更多消息
    • 0输出信息,警告,错误和致命信息(默认
    • 1 输出警告及以上
    • 2 输出错误及以上。
    • 等...我没有检查边缘情况
  • TF_CPP_MIN_VLOG_LEVEL-这会导致很多额外的信息错误-实际上仅用于调试- 数字低=消息少
    • 3 输出很多东西
    • 2 输出少
    • 1 输出更少
    • 0输出无额外内容(默认

附加条款:

  • 由于所有VLOG消息都是信息性消息,因此需要将LOG设置为0,以便您查看它们。幸运的是,这是默认设置。
  • 这些错误归为标准错误,因此您可以使用以下方法将其重定向:
    • python tf-program.py &>mylog.log
  • 这些应该由os模块拾取,因此您应该能够在环境中进行设置
  • 如果没有VLOG,也没有GPU,则不会有太多的信息消息,因此您可以认为日志记录实际上并没有工作。

视窗:

  • 除了python的os模块没有在Windows下拾取它们。Python从不爱Windows ...
    • 此代码序列在Windows中对我有效(并且肯定在Linux中有效):
      • import os
      • os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
      • os.environ['TF_CPP_MIN_VLOG_LEVEL'] = '3'
      • import tensorflow as tf

Linux:

  • 在Linux(bash)下,您可以在命令行上方便地指定这些内容,例如:
    • TF_CPP_MIN_VLOG_LEVEL=3 python tf-program.py

FWIW,我通过本教程在TensorFlow 1.7上进行了测试:

https://github.com/tensorflow/models/tree/master/tutorials/image/mnist
Run Code Online (Sandbox Code Playgroud)

这是它的样子:

在此处输入图片说明


pfm*_*pfm 2

我通常控制 TensorFlow 日志记录的方法是在任何 TensorFlow 导入之前使用这段代码

import os
import logging
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
logging.getLogger("tensorflow").setLevel(logging.WARNING)

import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)

我很高兴听到任何更好的解决方案。