Подтвердить что ты не робот

Как получить значение из переменной тензора 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.])
4b9b3361

Ответ 1

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.}), например)