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

有没有办法抑制TensorFlow打印的消息?

朱通
2023-03-14

我认为这些信息在开始的时候真的很重要,但是后来就没有用了。它实际上使读取和调试的情况变得更糟。

I tensorflow/流执行器/dso加载器。cc:128]已成功打开CUDA库libcublas。所以8.0本地I tensorflow/流执行器/dso加载器。抄送:119]无法打开CUDA库libcudnn。所以LD_库路径:I tensorflow/stream_executor/cuda/cuda_dnn。cc:3459]无法加载cuDNN DSO I tensorflow/stream_executor/DSO_loader。cc:128]已成功打开CUDA库libcuft。所以8.0本地I tensorflow/流执行器/dso加载器。cc:128]已成功打开CUDA库libcuda。所以1个本地I tensorflow/流执行器/dso加载器。cc:128]已成功打开CUDA库libcurand。所以本地8.0

有没有办法压制那些只说成功的人?

共有3个答案

洪越泽
2023-03-14

从Tensorflow v1开始。14(是的,包括2.x版)您可以使用本机日志记录模块使Tensorflow静音:

import logging
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # FATAL
logging.getLogger('tensorflow').setLevel(logging.FATAL)

我个人在我的项目中使用这个:

def set_tf_loglevel(level):
    if level >= logging.FATAL:
        os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    if level >= logging.ERROR:
        os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    if level >= logging.WARNING:
        os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'
    else:
        os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'
    logging.getLogger('tensorflow').setLevel(level)

这样我就可以通过运行禁用tf日志记录:

set_tf_loglevel(logging.FATAL)

我可以重新启用

set_tf_loglevel(logging.INFO)
胡安怡
2023-03-14

您可以使用设置TensorFlow日志的详细级别

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

其中错误可以是调试信息警告错误,或致命。请参阅日志模块。

但是,将此设置为ERROR并不总是完全阻止所有INFO日志,在我看来,要完全阻止它们,您有两个主要选择。

  • 如果您使用的是Linux,您可以grep输出所有以I tensorflow/开头的输出字符串
  • 否则,您可以使用一些修改过的文件完全重建TensorFlow。看看这个答案

如果您使用的是TensorFlow版本1(1.X),那么可以使用

tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
凌钊
2023-03-14

更新(超越1.14):在这里看到我更全面的答案(这是一个愚弄的问题):https://stackoverflow.com/a/38645250/6557588

除了Wintro的回答之外,您还可以从C端禁用/禁止TensorFlow日志(即以单个字符开头的较丑的日志:I、E等)。);关于日志记录的公开问题已经更新,声明您现在可以通过环境控制日志记录变量。现在,您可以通过设置名为TF_CPP_MIN_LOG_LEVEL的环境变量来更改级别;它默认为0(显示所有日志),但可以设置为1来过滤掉INFO日志,2来另外过滤掉警告日志,和3额外过滤掉ERROR日志。它现在似乎是主版本,很可能是未来版本的一部分(即r0.11之后的版本)。有关更多信息,请参阅此页面。下面是使用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
 类似资料:
  • 我一直在用java写一个作业,但当我试图写任何阿姆哈拉语字符时,它们会变成方框 例如,当我尝试在IntelliJ或net bean上打印这个阿姆哈拉字符 (አማርኛ) 时,它会显示为小盒子 如果有人熟悉这个请看看,提前谢谢。

  • 问题内容: 我知道您可以通过执行 node.requestFocus(); 来将焦点集中在javafx中的一个节点上 。 但是有没有办法从javafx中的节点上夺走焦点或阻止对某个对象的焦点? 问题答案: 我不认为有任何保证将始终有效,但是您可以尝试将焦点设置为本质上不接受键盘输入的内容(例如布局窗格):

  • 假设kafka消息生产者向一个主题发送一条事件消息。然后一个消费者处理这个事件消息。但是,这个消费者进程因为业务错误而抛出异常,所以他想让消息生产者知道它并再次怨恨。 有什么解决办法吗?

  • 我正在编写一个JavaFractal Explorer,分形计算是多线程完成的。以前,我只是创建了一堆线程(系统有多少处理器内核就有多少)并将它们保存在一个数组中,但这会导致一些问题,而且不是很优雅,现在我想切换到执行器。 我需要的功能是: 用户可以随时选择要放大的分形图像的新区域,因此应该可以随时取消计算,并立即重新插入新任务 我的问题是Java ExecutorService(我使用Execu

  • 这个程序应该输出 但是如果我输入的大小是4,我只输入这些值,但是如果我写的大小是4。。。它不需要我提供4个参数,而是需要3个参数并打印('',1,2,3) 请帮帮忙

  • 我想在应用GROUPBY条件后取消对数据帧的分组。我一组一组地用熊猫 现在我想将数据解组。列名是由下划线连接的列的组合。例如:Amt\u 8\u red\u 17:列名是(Amount、Count、Color、Id)输出的样子 有没有更快的办法?