theano – 打印TensorVariable的值
如何打印theano TensorVariable的数值? 我是theano的新手,所以请耐心等待:)
我有一个函数,我得到y
作为参数。 现在我想debugging打印这个y
的形状到控制台。 运用
print y.shape
导致控制台输出(我期待数字,即(2,4,4)
):
Shape.0
或者我怎样才能打印例如下面的代码的数字结果(这个计数y
有多less值大于最大值的一半):
errorCount = T.sum(T.gt(T.abs_(y),T.max(y)/2.0))
errorCount
应该是一个单一的数字,因为T.sum
总结了所有的值。 但是使用
print errCount
给我(预计像134
):
Sum.0
如果y是一个theanovariables,y.shape将是一个theanovariables。 所以这是正常的
print y.shape
返回:
Shape.0
如果你想评估expression式y.shape,你可以这样做:
y.shape.eval()
如果y.shape
没有input来计算自己(它只依赖于共享variables和常量)。 否则,如果y
取决于x
Theanovariables,则可以像这样传递input值:
y.shape.eval(x=numpy.random.rand(...))
这是相同的事情sum
。 Theano图是一个符号variables,只有在使用theano.function
编译它或者调用eval()
才能进行计算。
编辑:每个文档 ,theano的新版本中的语法是
y.shape.eval({x: numpy.random.rand(...)})
对于未来的读者:以前的答案是相当不错的。 但是,我发现“tag.test_value”机制对于debugging目的更有利(请参阅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
对我而言,这更有帮助; 例如检查正确的尺寸等
打印张量variables的值。
请执行下列操作:
print tensor[dimension].eval()
#这将在Tensor中的那个位置打印内容/值
例如,对于1d张量:
print tensor[0].eval()