禁用Tensorflow调试信息

Ghi*_*ADJ 131 python tensorflow

通过调试信息,我的意思是TensorFlow在我的终端中显示有关加载的库和找到的设备等,而不是python错误.

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties: 
name: Graphics Device
major: 5 minor: 2 memoryClockRate (GHz) 1.0885
pciBusID 0000:04:00.0
Total memory: 12.00GiB
Free memory: 11.83GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:717] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Graphics Device, pci bus id: 0000:04:00.0)
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:51] Creating bin of max chunk size 1.0KiB
...
Run Code Online (Sandbox Code Playgroud)

mww*_*web 160

您可以使用os.environ以下命令禁用所有调试日

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' 
import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)

测试结果为0.12和1.0

详细说明

0 = all messages are logged (default behavior)
1 = INFO messages are not printed
2 = INFO and WARNING messages are not printed
3 = INFO, WARNING, and ERROR messages are not printed
Run Code Online (Sandbox Code Playgroud)

  • 这只有在我输入tensorflow之前放入os.environ时才有效. (8认同)
  • 唯一对我有用的解决方案 TF2.0.0 它仅在导入张量流之前放置时才有效 (4认同)
  • 唯一适用于tf 2.0 alpha的东西 (3认同)
  • 这并不能得到一切。有没有办法甚至停止所有张量流输出,甚至插件消息,例如“金属设备设置为:Apple M1”? (3认同)
  • 即使在导入tensorflow之前也不适用于1.13和python3 (2认同)
  • 适用于 TF2.0 和 Python 3。导入 tensorflow 之前导入 os。 (2认同)
  • 即使在将其添加到 import tensorflow 之前,也不适用于 tf 2.4.1 和 python 3.7 (2认同)

cra*_*ael 94

1.0+更新(5/20/17):

在TensorFlow 0.12 +中,根据此问题,您现在可以通过调用的环境变量控制日志记录TF_CPP_MIN_LOG_LEVEL; 它默认为0(显示所有日志),但可以设置为1以过滤TF_CPP_MIN_LOG_LEVEL日志,2 可以设置为另外过滤tf.autograph.set_verbosity日志,3可以设置为另外过滤TF_CPP_MIN_LOG_LEVEL日志.使用Python查看以下通用OS示例:

import tensorflow as tf
tf.get_logger().setLevel('INFO')
Run Code Online (Sandbox Code Playgroud)

对于TensorFlow或TF-Learn Logging的早期版本,请参阅以下内容:

有关TensorFlow日志记录的信息,请查看下面的页面; 与新的更新,你能在日志记录级别设置为Level,tf_logging,DEBUG,INFO,或WARN.例如:

# Can also be set using the AUTOGRAPH_VERBOSITY environment variable
tf.autograph.set_verbosity(1)
Run Code Online (Sandbox Code Playgroud)

该页面另外还有可以与TF-Learn模型一起使用的监视器.这是页面.

但这并不会阻止所有日志记录(仅限TF-Learn).我有两个解决方案; 一个是"技术上正确"的解决方案(Linux),另一个涉及重建TensorFlow.

  Level | Level for Humans | Level Description                  
 -------|------------------|------------------------------------ 
  0     | DEBUG            | [Default] Print all messages       
  1     | INFO             | Filter out INFO messages           
  2     | WARNING          | Filter out INFO & WARNING messages 
  3     | ERROR            | Filter out all messages      
Run Code Online (Sandbox Code Playgroud)

另一方面,请参阅此答案,其中涉及修改源和重建TensorFlow.

  • 这也可以从命令行完成:`export TF_CPP_MIN_LOG_LEVEL="3" && python your_code.py` (3认同)

小智 21

我使用的是 Tensorflow 版本 2.3.1,上述解决方案均未完全有效。
直到,我找到了这个包裹。

像这样安装:

与蟒蛇,

python -m pip install silence-tensorflow
Run Code Online (Sandbox Code Playgroud)

使用 IDE,

pip install silence-tensorflow
Run Code Online (Sandbox Code Playgroud)

并添加到第一行代码:

from silence_tensorflow import silence_tensorflow
silence_tensorflow()
Run Code Online (Sandbox Code Playgroud)

就是这样!

  • 令人遗憾的是,需要一个单独的包“silence-tensorflow”来抑制张量流输出。 (3认同)

Ped*_*pes 13

我也有这个问题(上tensorflow-0.10.0rc0),但无法通过建议的答案修复过多的鼻子测试记录问题.

我设法通过直接探测tensorflow记录器来解决这个问题.不是最正确的修复,但效果很好,只污染直接或间接导入tensorflow的测试文件:

# Place this before directly or indirectly importing tensorflow
import logging
logging.getLogger("tensorflow").setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)


ser*_*inc 11

为了与Tensorflow 2.0兼容,您可以使用tf.get_logger

import logging
tf.get_logger().setLevel(logging.ERROR)
Run Code Online (Sandbox Code Playgroud)

  • 使用tensorflow 1.13.1为我工作 (3认同)
  • 也可以作为字符串使用 `tf.get_logger().setLevel('ERROR')` (2认同)

Wik*_*nia 10

由于TF_CPP_MIN_LOG_LEVEL不适合我,你可以尝试:

tf.logging.set_verbosity(tf.logging.WARN)
Run Code Online (Sandbox Code Playgroud)

在tensorflow v1.6.0中为我工作


小智 7

我用这篇文章解决了无法删除所有警告 #27045,解决方案是:

import logging
logging.getLogger('tensorflow').disabled = True
Run Code Online (Sandbox Code Playgroud)

  • 在 tf 导入期间不适用于 FutureWarnings,tf=1.13.1 py3 (3认同)
  • 只有这个对我有用!我的配置:Keras“2.2.4”(使用 tf 1.15.0)和 Python 3.7.4 (2认同)

Mat*_*ite 7

对于仍在努力使os.environ解决方案像我一样工作的任何人,请导入tensorflow脚本之前检查它是否已放置,就像 mwweb 的答案一样:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # or any {'0', '1', '2'}
import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)


est*_*evo 6

通常的python3日志管理器为我使用tensorflow == 1.11.0:

import logging
logging.getLogger('tensorflow').setLevel(logging.INFO)
Run Code Online (Sandbox Code Playgroud)