Python Theano共享变量更新导致'ValueError:长度未知`
最小示例代码:Python Theano共享变量更新导致'ValueError:长度未知`,python,numpy,theano,Python,Numpy,Theano,最小示例代码: import theano as th import theano.tensor as T import numpy as np x = T.dscalars('x') z = th.shared(np.zeros(2)) updates = [z, z+x] f1 = th.function(inputs=[x], updates=updates) f1(3) print z.get_value() 错误消息: Traceback (most recent call l
import theano as th
import theano.tensor as T
import numpy as np
x = T.dscalars('x')
z = th.shared(np.zeros(2))
updates = [z, z+x]
f1 = th.function(inputs=[x], updates=updates)
f1(3)
print z.get_value()
错误消息:
Traceback (most recent call last):
File "/home/temp2/theano.test.py", line 9, in <module>
f1 = th.function(inputs=[x], updates=updates)
File "/usr/local/lib/python2.7/dist-packages/theano/compile/function.py", line 205, in function
profile=profile)
File "/usr/local/lib/python2.7/dist-packages/theano/compile/pfunc.py", line 460, in pfunc
no_default_updates=no_default_updates)
File "/usr/local/lib/python2.7/dist-packages/theano/compile/pfunc.py", line 191, in rebuild_collect_shared
for (store_into, update_val) in iter_over_pairs(updates):
File "/usr/local/lib/python2.7/dist-packages/theano/tensor/basic.py", line 1610, in __iter__
for i in xrange(get_vector_length(self)):
File "/usr/local/lib/python2.7/dist-packages/theano/tensor/basic.py", line 5210, in get_vector_length
raise ValueError("length not known")
ValueError: length not known
回溯(最近一次呼叫最后一次):
文件“/home/temp2/theano.test.py”,第9行,在
f1=th.函数(输入=[x],更新=更新)
文件“/usr/local/lib/python2.7/dist-packages/theano/compile/function.py”,第205行,在函数中
外形=外形)
pfunc中的文件“/usr/local/lib/python2.7/dist-packages/theano/compile/pfunc.py”,第460行
无默认更新=无默认更新)
文件“/usr/local/lib/python2.7/dist packages/theano/compile/pfunc.py”,第191行,位于rebuild\u collect\u shared中
对于iter\U over\U对(更新)中的(存储到,更新到):
文件“/usr/local/lib/python2.7/dist packages/theano/tensor/basic.py”,第1610行,在__
对于x范围内的i(获取向量长度(self)):
文件“/usr/local/lib/python2.7/dist packages/theano/tensor/basic.py”,第5210行,get_vector_长度
提升值错误(“长度未知”)
ValueError:长度未知
此错误的原因是什么?
更新必须包含对的列表。请参阅有关的官方教程
正确代码:
import theano as th
import theano.tensor as T
import numpy as np
x = T.dscalars('x')
z = th.shared(np.zeros(2))
updates = [(z, z+x)]
f1 = th.function(inputs=[x], updates=updates)
f1(3)
print z.get_value()
在这种情况下,我会将消息错误更新为:“updates参数必须是OrderedDict/dict或一个包含2个元素的列表/元组列表”@nouiz,如果尝试类似于updates=(z,z+x)
的操作,则错误消息也没有太大帮助:TypeError:TensorType不支持迭代。也许您使用的是内置的.sum而不是no.tensor.sum?(可能是.max?)