Как получить значение из переменной тензора anano, поддерживаемой общей переменной?

У меня есть переменная тензора anano, созданная при использовании общей переменной. Как извлечь исходные или литые значения? (Мне нужно, чтобы мне не пришлось переносить исходные значения shared / numpy.)

>>> x = theano.shared(numpy.asarray([1, 2, 3], dtype='float')) >>> y = theano.tensor.cast(x, 'int32') >>> y.get_value(borrow=True) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'TensorVariable' object has no attribute 'get_value' # whereas I can do this against the original shared variable >>> x.get_value(borrow=True) array([ 1., 2., 3.]) 

get_value работает только для общих переменных. TensorVariables – это общие выражения и, следовательно, потенциально нуждаются в дополнительном вводе, чтобы иметь возможность определить их значение (предположим, что вы задали y = x + z , где z – другая тензорная переменная. Вам нужно будет указать z прежде чем сможете вычислить y ). Вы можете либо создать функцию для предоставления этого ввода, либо предоставить его в словаре, используя метод eval .

В вашем случае y зависит только от x , поэтому вы можете сделать

 import theano import theano.tensor as T x = theano.shared(numpy.asarray([1, 2, 3], dtype='float32')) y = T.cast(x, 'int32') y.eval() 

и вы должны увидеть результат

 array([1, 2, 3], dtype=int32) 

(А в случае y = x + z вам нужно было бы сделать y.eval({z : 3.}) , например)