25

で関数をコンパイルする場合、theanoを指定することで共有変数 (X など) を更新できますupdates=[(X, new_value)]。今、共有変数のサブセットのみを更新しようとしています:

from theano import tensor as T
from theano import function
import numpy

X = T.shared(numpy.array([0,1,2,3,4]))
Y = T.vector()
f = function([Y], updates=[(X[2:4], Y)] # error occur:
                                        # 'update target must 
                                        # be a SharedVariable'

コードは「更新ターゲットはSharedVariableでなければなりません」というエラーを発生させます。これは、更新ターゲットを非共有変数にすることはできないことを意味すると思います。共有変数のサブセットを更新するだけの関数をコンパイルする方法はありますか?

4

2 に答える 2

0

このコードはあなたの問題を解決するはずです:

from theano import tensor as T
from theano import function, shared
import numpy

X = shared(numpy.array([0,1,2,3,4], dtype='int'))
Y = T.lvector()
X_update = (X, X[2:4]+Y)
f = function(inputs=[Y], updates=[X_update])
f([100,10])
print X.get_value()
# output: [102 13]

そしてこちらが公式チュートリアルの共有変数についての紹介です。

さらに質問がある場合は、お尋ねください。

于 2013-05-24T16:28:42.940 に答える