似乎variable.shape会通知我
AttributeError: 'SharedVariable' object has no attribute 'shape'
而theano.tensor.shape(变量)将返回shape.0
我真的很困惑,为什么我不能得到关于它的形状信息?当我想获取符号变量的形状信息时,会出现同样的问题。这太奇怪了。
x = T.matrix('x') # the data is presented as rasterized images
y = T.ivector('y') # the labels are presented as 1D vector of
# [int] labels
layer0_input = x.reshape((batch_size, 1, 28, 28))
在上面的例子中,x(符号变量)已经被重新塑造成某种形状,如果我无法检索其形状信息而对它仍然有意义,同时仍然可以为其指定新的形状。
答案 0 :(得分:1)
第一个错误可能是由于您尝试评估数据类型shape
上的SharedVariable
属性而不是实际共享变量。
否则,获取shape.0
是完全正常的:这是一个表示形状的符号表达式,它是先验未知的。只要您使用数据进行评估,您就会看到形状:
import theano
import theano.tensor as T
import numpy as np
s = theano.shared(np.arange(2 * 3 * 5).reshape(2, 3, 5))
print(s.shape) # gives you shape.0
print(s.shape.eval()) # gives you an array containing 2, 3, 5
a = T.tensor3()
print(a.shape) # gives you shape.0
print(a.shape.eval({a: np.arange(2 * 3 * 5).reshape(2, 3, 5).astype(theano.config.floatX)})) # gives 2, 3, 5