web-dev-qa-db-ja.com

共有変数に裏打ちされたtheanoテンソル変数から値を取得する方法は?

共有変数をキャストして作成したtheanoテンソル変数があります。元の値またはキャストされた値を抽出するにはどうすればよいですか? (私はそれを必要とするので、元の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.])
13
teddy

_get_value_はシェア変数に対してのみ機能します。 TensorVariablesは一般的な式であるため、値を決定するために追加の入力が必要になる可能性があります(_y = x + z_を設定するとします。ここで、zは別のテンソル変数です。次のようにする必要があります。 zを計算する前にyを指定します)。この入力を提供する関数を作成するか、evalメソッドを使用して辞書に入力することができます。

あなたの場合、yxにのみ依存するので、

_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.})を実行する必要があります)

15
eickenberg