gpt4 book ai didi

tensorflow - 有没有办法让tensorflow tf.Print输出出现在Jupyter Notebook输出中

转载 作者:行者123 更新时间:2023-12-02 22:32:02 33 4
gpt4 key购买 nike

我在 Jupyter 笔记本中使用 tf.Print 操作。它按要求工作,但只会将输出打印到控制台,而不在笔记本中打印。有什么办法可以解决这个问题吗?

示例如下(在笔记本中):

import tensorflow as tf

a = tf.constant(1.0)
a = tf.Print(a, [a], 'hi')
sess = tf.Session()
a.eval(session=sess)

该代码将在控制台中打印“hi[1]”,但在笔记本中不会打印任何内容。

最佳答案

2017 年 2 月 3 日更新我已将其包装到 memory_util 中包裹。使用示例

# install memory util
import urllib.request
response = urllib.request.urlopen("https://raw.githubusercontent.com/yaroslavvb/memory_util/master/memory_util.py")
open("memory_util.py", "wb").write(response.read())

import memory_util

sess = tf.Session()
a = tf.random_uniform((1000,))
b = tf.random_uniform((1000,))
c = a + b
with memory_util.capture_stderr() as stderr:
sess.run(c.op)

print(stderr.getvalue())

** 老东西**

您可以重复使用FD redirector来自 IPython 核心。 (马克·桑德勒的想法)

import os
import sys

STDOUT = 1
STDERR = 2

class FDRedirector(object):
""" Class to redirect output (stdout or stderr) at the OS level using
file descriptors.
"""

def __init__(self, fd=STDOUT):
""" fd is the file descriptor of the outpout you want to capture.
It can be STDOUT or STERR.
"""
self.fd = fd
self.started = False
self.piper = None
self.pipew = None

def start(self):
""" Setup the redirection.
"""
if not self.started:
self.oldhandle = os.dup(self.fd)
self.piper, self.pipew = os.pipe()
os.dup2(self.pipew, self.fd)
os.close(self.pipew)

self.started = True

def flush(self):
""" Flush the captured output, similar to the flush method of any
stream.
"""
if self.fd == STDOUT:
sys.stdout.flush()
elif self.fd == STDERR:
sys.stderr.flush()

def stop(self):
""" Unset the redirection and return the captured output.
"""
if self.started:
self.flush()
os.dup2(self.oldhandle, self.fd)
os.close(self.oldhandle)
f = os.fdopen(self.piper, 'r')
output = f.read()
f.close()

self.started = False
return output
else:
return ''

def getvalue(self):
""" Return the output captured since the last getvalue, or the
start of the redirection.
"""
output = self.stop()
self.start()
return output

import tensorflow as tf
x = tf.constant([1,2,3])
a=tf.Print(x, [x])

redirect=FDRedirector(STDERR)

sess = tf.InteractiveSession()
redirect.start();
a.eval();
print "Result"
print redirect.stop()

关于tensorflow - 有没有办法让tensorflow tf.Print输出出现在Jupyter Notebook输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898478/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com