Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 禁用Tensorflow调试信息_Python_Tensorflow - Fatal编程技术网

Python 禁用Tensorflow调试信息

Python 禁用Tensorflow调试信息,python,tensorflow,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

通过调试信息,我指的是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
...
2.0更新(19年8月10日) 设置
TF\u CPP\u MIN\u LOG\u LEVEL
仍应有效(请参见v0.12+更新中的下文),但当前存在一个问题(请参见)。如果设置
TF\u CPP\u MIN\u LOG\u LEVEL
对您不起作用(请再次参阅下文),请尝试执行以下操作以设置日志级别:

将tensorflow导入为tf
tf.get_logger().setLevel('INFO'))
此外,请参阅设置签名日志消息详细性的文档-例如:

#也可以使用AUTOGRAPH\u VERBOSITY环境变量进行设置
tf.亲笔签名集详细信息(1)
v0.12+更新(5/20/17),通过TF2.0+工作:

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

级别|人类级别|级别描述
-------|------------------|------------------------------------ 
0 |调试|[默认]打印所有消息
1 |信息|过滤掉信息消息
2 |警告|过滤掉信息和警告消息
3 |错误|过滤掉所有消息
请参见以下使用Python的通用操作系统示例:

导入操作系统
os.environ['TF_CPP_MIN_LOG_LEVEL']=“3”或任何{'0','1','2'}
导入tensorflow作为tf
可以在运行脚本的环境中设置此环境变量。例如,对于bash,它可以在文件
~/.bashrc
/etc/environment
/etc/profile
中,或者在实际的shell中作为:

TF\u CPP\u MIN\u LOG\u LEVEL=2 python my\u TF\u script.py
为了更全面,您还可以调用设置Python模块的级别,该模块用于例如summary ops、tensorboard、各种估计器等

#附加到上面的行
set_verbosity(tf.logging.ERROR)#或任何{DEBUG,INFO,WARN,ERROR,FATAL}
对于1.14,如果您不更改为使用v1 API,您将收到警告,如下所示:

#附加到上面的行
tf.compat.v1.logging.set_详细性(tf.compat.v1.logging.ERROR)#或任何{DEBUG、INFO、WARN、ERROR、FATAL}

**对于TensorFlow或TF Learn Logging(v0.11.x或更低版本)的早期版本:** 查看以下页面,了解TensorFlow测井信息;使用新的更新,您可以将日志详细性设置为
调试
信息
警告
错误
,或
致命
。例如:

tf.logging.set\u详细信息(tf.logging.ERROR)
本页还介绍了可用于TF学习模型的监视器

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

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

另一方面,请查看其中涉及修改源代码和重建TensorFlow的部分。

我也有此问题(在
TensorFlow-0.10.0rc0
上),但无法通过建议的答案解决过多的鼻测试日志记录问题

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

# Place this before directly or indirectly importing tensorflow
import logging
logging.getLogger("tensorflow").setLevel(logging.WARNING)

您可以使用
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

由于
TF\u CPP\u MIN\u LOG\u LEVEL
对我不起作用,您可以尝试:

tf.logging.set_verbosity(tf.logging.WARN)

在tensorflow v1.6.0中为我工作

为了在这里增加一些灵活性,您可以通过编写一个函数来实现对日志级别的更细粒度控制,该函数可以根据您的喜好过滤消息:

logging.getLogger('tensorflow').addFilter(my_filter_func)
其中
my\u filter\u func
接受
LogRecord
对象作为输入[],并且 如果希望抛出消息,则返回零;否则为非零

下面是一个示例过滤器,它只保留每个第n条信息消息(Python3) 要使用
非本地
,请参见此处):


所有这些都假设TensorFlow已经设置了其日志记录状态。在添加筛选器之前,可以通过调用
tf.logging.get_verbosity()
来确保这一点,而不会产生副作用。

通常的python3日志管理器适用于tensorflow==1.11.0的情况:

import logging
logging.getLogger('tensorflow').setLevel(logging.INFO)

要与Tensorflow 2.0兼容,可以使用

我用这篇文章解决了这个问题,解决方案是:

import logging
logging.getLogger('tensorflow').disabled = True

是的,我正在使用TF2.0-beta,希望启用/禁用默认日志记录。tf1.X中的环境变量和方法似乎不再存在

我在PDB中走来走去,发现这是可行的:

# close the TF2 logger
tf2logger = tf.get_logger()
tf2logger.error('Close TF2 logger handlers')
tf2logger.root.removeHandler(tf2logger.root.handlers[0])
然后我添加自己的记录器API(在本例中是基于文件的)


对于tensorflow 2.1.0,以下代码可以正常工作

import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

如果您只需要清除屏幕上的警告输出,您可能希望在导入tensorflow后立即使用此简单命令清除控制台屏幕(这比根据我的经验禁用所有调试日志更有效):

在windows中:

import os
os.system('cls')
在Linux或Mac中:

import os
os.system('clear')

上面的解决方案都不能解决我在Jupyter笔记本中的问题,因此我使用下面的代码片段,并解决了问题

import warnings  
with warnings.catch_warnings():  
    warnings.filterwarnings("ignore",category=FutureWarning)
    import tensorflow as tf
    from tensorflow import keras
    from tensorflow.keras.preprocessing.text import Tokenizer

print('Done') 

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

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

我使用的是Tensorflow 2.3.1版,上述解决方案均未完全有效。
直到,我
import os
os.system('clear')
import warnings  
with warnings.catch_warnings():  
    warnings.filterwarnings("ignore",category=FutureWarning)
    import tensorflow as tf
    from tensorflow import keras
    from tensorflow.keras.preprocessing.text import Tokenizer

print('Done') 
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # or any {'0', '1', '2'}
import tensorflow as tf
python -m pip install silence-tensorflow
pip install silence-tensorflow
from silence_tensorflow import silence_tensorflow
silence_tensorflow()
import os
import logging
import sys

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # FATAL
stderr = sys.stderr
sys.stderr = open(os.devnull, 'w')

import tensorflow as tf
tf.get_logger().setLevel(tf.compat.v1.logging.FATAL)
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
logging.getLogger('tensorflow').setLevel(tf.compat.v1.logging.FATAL)

sys.stderr = stderr

import absl.logging
logging.root.removeHandler(absl.logging._absl_handler)
absl.logging._warn_preinit_stderr = False