【问题标题】:Suppress Tensorflow "Executing op" messages when using TPU使用 TPU 时抑制 Tensorflow“执行操作”消息
【发布时间】:2021-03-05 17:57:33
【问题描述】:

我知道对于 Tensorflow 2 及以后的版本,Tensorflow 打印的输出可以根据级别相当容易地抑制:

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

但是,当我在 Google Colab 上使用 TPU 时,使用这种方法根本不会过滤掉以“Executing op”开头的消息。如何过滤掉这些消息?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    我最终不得不使用来自 logging 的自定义过滤器来解析 sys.stdoutsys.stderr

    # Suppress TPU messages which start with "Executing op"
    
    import sys, re, logging
    
    class Filter(object):
        def __init__(self, stream):
            self.stream = stream
    
        def __getattr__(self, attr_name):
            return getattr(self.stream, attr_name)
    
        def write(self, data):
            if not data.startswith("Executing op"):
                self.stream.write(data)
                self.stream.flush()
    
        def flush(self):
            self.stream.flush()
      
    sys.stdout = Filter(sys.stdout)
    sys.stderr = Filter(sys.stderr)
    
    logger = logging.getLogger(__name__)
    

    我不太确定这是否优雅,但我找不到更好的解决方案。希望这可以帮助遇到同样问题的其他人。

    【讨论】:

    • 发布此消息后,我意识到为什么我首先会收到这些消息。我正在尝试Tensorflow's GPU sample code 并设置tf.debugging.set_log_device_placement(True),这样做会启用设备放置日志记录,这会导致打印任何张量分配或操作。我删除了线路并重新启动了我的笔记本,现在没有这样的消息打印。我是个傻瓜。
    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 2012-01-22
    • 2017-03-18
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多