当前位置: 首页 > 知识库问答 >
问题:

禁用Tensorflow调试信息

宦烈
2023-03-14

通过调试信息,我指的是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
...

共有3个答案

陶福
2023-03-14

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

import logging
tf.get_logger().setLevel(logging.ERROR)
徐星阑
2023-03-14

2.0更新(19年8月10日)设置TF_CPP_MIN_LOG_LEVEL仍应有效(见v0.12更新中的下文),但当前存在一个问题(见问题31870)。如果设置TF\u CPP\u MIN\u LOG\u LEVEL对您不起作用(请再次参阅下文),请尝试执行以下操作以设置日志级别:

import tensorflow as tf
tf.get_logger().setLevel('INFO')

此外,请参阅tf.autograph.set\u verbosity上的文档,该文档用于设置签名日志消息的详细程度,例如:

# Can also be set using the AUTOGRAPH_VERBOSITY environment variable
tf.autograph.set_verbosity(1)

V0.12更新(5/20/17),通过TF 2.0工作:

在TensorFlow 0.12中,根据此问题,您现在可以通过名为TF_CPP_MIN_LOG_LEVEL的环境变量控制日志记录;它默认为0(显示所有日志),但可以设置为Level列下的以下值之一。

  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      

请参见以下使用Python的通用操作系统示例:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # or any {'0', '1', '2'}
import tensorflow as tf

可以在运行脚本的环境中设置此环境变量。例如,对于bash,它可以在文件~/.bashrc/etc/environment/etc/profile中,或者在实际的shell中作为:

TF_CPP_MIN_LOG_LEVEL=2 python my_tf_script.py

为了彻底,您还需要为Pythontf_logging模块设置级别,该模块用于例如摘要操作、单板、各种估计器等。

# append to lines above
tf.logging.set_verbosity(tf.logging.ERROR)  # or any {DEBUG, INFO, WARN, ERROR, FATAL}

对于1.14,如果您不更改为使用v1 API,您将收到如下警告:

# append to lines above
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)  # or any {DEBUG, INFO, WARN, ERROR, FATAL}

查看以下页面,了解TensorFlow测井信息;使用新的更新,您可以将日志详细性设置为调试信息警告错误,或致命。例如:

tf.logging.set_verbosity(tf.logging.ERROR)

本页还介绍了可用于TF学习模型的监视器。这是这一页。

不过,这并不会阻止所有日志记录(只有TF Learn)。我有两个解决办法;一个是“技术正确”的解决方案(Linux),另一个涉及重建TensorFlow。

script -c 'python [FILENAME].py' | grep -v 'I tensorflow/'

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

邢令
2023-03-14

您可以使用os.environ禁用所有调试日志:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' 
import tensorflow as tf

测试tf 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
 类似资料:
  • 问题内容: 通过调试信息,我的意思是TensorFlow在终端中显示的有关已加载的库和找到的设备等的内容,不是Python错误。 问题答案: 2.0更新(10/8/19) 设置仍然应该起作用(请参见v0.12 +TF_CPP_MIN_LOG_LEVEL对您不起作用(再次参见下文),请尝试执行以下操作来设置日志级别: 此外,请参阅有关tf.autograph.set_verbosity设置签名日志消

  • 大家好,我必须禁用。我试过了 和

  • 我正在开发一个简单的桌面应用程序(不是webapp)。 它们有不同的模式。好像他们忽略了我的设置。 我也试着应用我在这里找到的建议: https://spring.io/blog/2009/12/04/logging-dependencies-in-spring

  • 对于初始模型,我主要遵循这一点。比方说,我想在每个训练循环上打印批次中使用的图像数据,即我想在“微调不同标签集上的模型”中打印每个训练迭代的“images”变量值代码,既然会话实际上是在slim中创建的,我该如何做呢。训练训练功能,因此我无法进行sess。在没有SES的情况下运行([图像])?

  • 真理会使你获得自由。在调试问题时,若能输出配置清单某一个点上的信息将会对问题解决有很大帮助。 这是一种很好的报告问题的方式,例如,如果一个变量没有定义或者定义了一个非法的值。 有时,获知一个特定的代码片段已经被执行也是很有用的。 Puppet 的 notify 资源可以让你显示出调试信息。 操作步骤 在你的配置清单中要被调研的检查点上定义 notify 资源: notify { "Got this

  • 我在试着移除黄色信息。我试过了,在快捷方式中添加了参数,但没有成功: 隐藏这个黄色信息的正确方法是什么?谢谢