python - Theano共享变量更新导致 `ValueError: length not known`

标签 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 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

这个错误的原因是什么?

最佳答案

更新必须包含对列表。参见官方教程using shared variables .

正确代码:

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()

关于python - Theano共享变量更新导致 `ValueError: length not known`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17026496/

相关文章:

python - 按索引号向列 pandas 数据框添加值

python - pymc3:具有确定性切换点功能的灾难示例

python - OpenCV Python 去除小轮廓,保存子轮廓

python - PIL选择坐标来制作图像

python - 50% 处的 CDF x 值和平均值不显示相同的数字

python - 这个 SciPy 教程指的是什么 python 函数?

python - 根据对象的属性访问numpy数组

python - Theano 在 Linux 中使用 cuDNN 崩溃

python - 稀疏矩阵乘法的theano梯度

python - 为什么此代码在没有任何输入的情况下启动时显示 'A'?