【发布时间】:2015-06-05 02:19:07
【问题描述】:
我有以下代码:
import theano.tensor as T
Words = theano.shared(value = U, name = 'Words')
zero_vec_tensor = T.vector()
zero_vec = np.zeros(img_w, dtype = theano.config.floatX)
set_zero = theano.function([zero_vec_tensor], updates=[(Words, T.set_subtensor(Words[0,:], zero_vec_tensor))])
哪个编译得很好(其中U 是一个 dtype 的 numpy 数组float64)。
为了防止将来出现类型错误,我想将我的共享张量 Words 转换为 float32(或 theano.config.floatX,这相当于我在配置文件中将 floatX 设置为 float32)。
我添加了Words = T.cast(Words, dtype = theano.config.floatX),然后我收到以下错误:
TypeError: ('update target must be a SharedVariable', Elemwise{Cast{float32}}.0)。
我不明白为什么。根据这个question,使用set_subtensor 应该允许我更新共享变量的子集。
如何在能够更新共享张量的同时投射它?
【问题讨论】:
标签: python-2.7 numpy theano