¿Cómo obtener valor de una variable de tensor theano respaldada por una variable compartida?

Tengo una variable tensorial teana creada a partir de lanzar una variable compartida. ¿Cómo puedo extraer los valores originales o fundidos? (Necesito eso para no tener que llevar los valores compartidos / numpy originales).

>>> 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 "", line 1, in  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 solo funciona para variables compartidas. TensorVariables son expresiones generales y, por lo tanto, pueden necesitar una entrada adicional para poder determinar su valor (Imagine que configura y = x + z , donde z es otra variable tensorial. Deberá especificar z antes de poder calcular y ). Puede crear una función para proporcionar esta entrada o incluirla en un diccionario utilizando el método eval .

En tu caso, y solo depende de x , así que puedes hacer

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

y deberías ver el resultado

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

(Y en el caso y = x + z , tendrías que hacer y.eval({z : 3.}) , por ejemplo)