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()