如何打印theano TensorVariable的数值? 我是theano的新手,所以请耐心等待:)。
我有一个函数,我将y
作为参数。
现在我想将此y
的形状调试打印到控制台。
使用
print y.shape
导致控制台输出(我期待数字,即(2,4,4)
):
Shape.0
或者我如何打印以下代码的数值结果(这会计算y
中的值大于最大值的一半):
errorCount = T.sum(T.gt(T.abs_(y),T.max(y)/2.0))
errorCount
应为单个数字,因为T.sum
总结了所有值。
但是使用
print errCount
给了我(期望类似134
):
Sum.0
答案 0 :(得分:38)
如果y是theano变量,y.shape将是theano变量。
是正常的print y.shape
返回:
Shape.0
如果要评估表达式y.shape,可以执行以下操作:
y.shape.eval()
如果y.shape
没有输入计算本身(它只依赖于共享变量和常量)。否则,如果y
取决于x
Theano变量,您可以传递输入值,如下所示:
y.shape.eval(x=numpy.random.rand(...))
这对sum
来说是一回事。 Theano图是符号变量,在用theano.function
编译或在其上调用eval()
之前不进行计算。
编辑:根据docs,theano的新版本中的语法是
y.shape.eval({x: numpy.random.rand(...)})
答案 1 :(得分:13)
对于未来的读者:之前的答案非常好。 但是,我找到了' tag.test_value'机制更有利于调试目的(参见theano-debug-faq):
from theano import config
from theano import tensor as T
config.compute_test_value = 'raise'
import numpy as np
#define a variable, and use the 'tag.test_value' option:
x = T.matrix('x')
x.tag.test_value = np.random.randint(100,size=(5,5))
#define how y is dependent on x:
y = x*x
#define how some other value (here 'errorCount') depends on y:
errorCount = T.sum(y)
#print the tag.test_value result for debug purposes!
errorCount.tag.test_value
对我来说,这更有帮助;例如,检查正确的尺寸等。
答案 2 :(得分:1)
打印张量变量的值。
执行以下操作:
<html lang="en">
<head>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<h2>click Here</h2>
<div class="container">
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
#这将打印Tensor中该位置的内容/值
示例,对于1 d张量:
print tensor[dimension].eval()
答案 3 :(得分:0)
使用theano.printing.Print
将打印运算符添加到计算图。
示例:
import numpy
import theano
x = theano.tensor.dvector('x')
x_printed = theano.printing.Print('this is a very important value')(x)
f = theano.function([x], x * 5)
f_with_print = theano.function([x], x_printed * 5)
#this runs the graph without any printing
assert numpy.all( f([1, 2, 3]) == [5, 10, 15])
#this runs the graph with the message, and value printed
assert numpy.all( f_with_print([1, 2, 3]) == [5, 10, 15])
输出:
this is a very important value __str__ = [ 1. 2. 3.]
来源:Theano 1.0 docs: “How do I Print an Intermediate Value in a Function?”
答案 4 :(得分:0)
我发现@zuuz的答案很有帮助, 对于值,
print(your_variable.tag.test_value)
对于形状,应将其更新为
print(np.shape(your_variable.tag.test_value))