禁用keras或tensorflow输出[重复]

Posted

技术标签:

【中文标题】禁用keras或tensorflow输出[重复]【英文标题】:Disabling keras or tensorflow outputs [duplicate] 【发布时间】:2021-07-04 15:42:17 【问题描述】:

我知道 *** 上已经有一些类似的问题,但没有一个能解决我的问题。在 python 脚本中,我必须多次训练一个 keras 模型,并且我想通过 GPU 支持来做到这一点。每次我在输出控制台中得到一堆令人不安的行,因为我再也看不到有用的信息了。这是输出的一部分。

2021-04-08 19:43:40.804324: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
2021-04-08 19:43:40.804368: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-04-08 19:43:40.804409: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-04-08 19:43:40.804418: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165]      0 
2021-04-08 19:43:40.804424: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0:   N 
2021-04-08 19:43:40.804495: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/device:GPU:0 with 1356 MB memory) -> physical GPU (device: 0, name: NVIDIA GeForce MX250, pci bus id: 0000:06:00.0, compute capability: 6.1)
2021-04-08 19:45:27.918402: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
name: NVIDIA GeForce MX250 major: 6 minor: 1 memoryClockRate(GHz): 1.582
pciBusID: 0000:06:00.0

我尝试了一些我在互联网上找到的方法,包括以下方法,但没有任何效果。

import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"

import logging
logging.getLogger("tensorflow").setLevel(logging.ERROR)
logging.getLogger("tensorflow").addHandler(logging.NullHandler(logging.ERROR))

欢迎提出任何建议。

关于我的设置:

 - python 3.6.8 
 - keras 2.3.1 
 - tensorflow 2.0.0 
 - cudatoolkit 10.0.130

【问题讨论】:

我发现 tf 的那些日志行很有用,也许你可以打印一些标记来查看它旁边的值:print("="*80) 感谢您的建议,但我希望摆脱这些输出。 【参考方案1】:

Tensorflow Documenation 中的本教程讨论了使用元数据 DB(MLMD) API 来防止打印输出。这可能适用于您的应用程序。

【讨论】:

我在那里找不到解决方案。你能更详细地描述一下你的意思吗?【参考方案2】:

我使用这种简单的方法,对我有用。

# tacke future warning, deprecated warning, bla bla 
import warnings

# ------------ tackle some noisy warning
def warn(*args, **kwargs):
    pass
warnings.warn = warn
warnings.simplefilter(action="ignore", category=FutureWarning)
warnings.filterwarnings("ignore", category = DeprecationWarning)

'''
TF_CPP_MIN_LOG_LEVEL = 0 to all logs .
TF_CPP_MIN_LOG_LEVEL = 1 to filter out INFO logs 
TF_CPP_MIN_LOG_LEVEL = 2 to additionall filter out WARNING 
TF_CPP_MIN_LOG_LEVEL = 3 to additionally filter out ERROR.
'''
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

# now import tf 
import tensorflow as tf

【讨论】:

感谢您的回答。不幸的是,这并没有解决问题。 你的 tf 版本是多少? 我已将此添加到我的问题中

以上是关于禁用keras或tensorflow输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TensorFlow、Keras 或 PyTorch 中部署 CoreML 模型?

使用自定义维度输入 tensorflow 或 keras 神经网络

Keras/Tensorflow:单输出的组合损失函数

Keras,Tensorflow:将两个不同的模型输出合并为一个

keras层的归一化输出

让 Keras / Tensorflow 输出 OneHotCategorical,但操作没有梯度