TensorVariab的no-print值

2024-03-29 08:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

如何打印该变量的数值? 我是新来的,所以请耐心点:)

我有一个函数,在这里我得到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

Tags: 函数代码gt内容参数数字absmax
3条回答

打印张量变量的值。

执行以下操作:

print tensor[dimension].eval()这将在张量的那个位置打印内容/值

例如,对于一维张量:

print tensor[0].eval()

对于未来的读者:前面的答案非常好。 但是,我发现“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

对我来说,这更有用;例如,检查正确的尺寸等

如果y是theano变量,y.shape将是theano变量。所以这很正常

print y.shape

返回:

Shape.0

如果要计算表达式y.shape,可以执行以下操作:

y.shape.eval()

如果y.shape不输入计算本身(它只依赖于共享变量和常量)。否则,如果y依赖于x这个no变量,则可以像这样传递输入值:

y.shape.eval(x=numpy.random.rand(...))

这对sum来说也是一样的。no图是一个符号变量,只有用theano.function编译或调用eval()才能进行计算。

编辑:根据docs,较新版本的ano中的语法是

y.shape.eval({x: numpy.random.rand(...)})

相关问题 更多 >