Theano共享变量更新导致“ 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()

错误信息:


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

此错误的原因是什么?


宝慕林4294392
浏览 221回答 1
1回答

烙印99

Updates必须包含a list of pairs。请参阅有关使用共享变量的官方教程。正确的代码:import theano as thimport theano.tensor as Timport numpy as npx = T.dscalars('x')z = th.shared(np.zeros(2))updates = [(z, z+x)]f1 = th.function(inputs=[x], updates=updates)&nbsp;f1(3)print z.get_value()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python