我有一个清单:
my_list = [[1,2,3,4], [4,5,6], [1,2,1,2,1,2]]
我也有一个张量变量:
a_tensor = theano.tensor.ivector("tensor")
现在我想使用theano.scan来获取给定索引的列表中的相应项:
result, _ = theano.scan(fn=lambda idx, a_list:a_list[idx],
sequences=[a_tensor],
non_sequences=theano.shared(np.array(my_list)))
但得到了错误: * TypeError:泛型' SharedVariable'对象不可订阅。这个共享变量包含一个带有dtype的Numpy数组:' object'。 Theano tensors目前无法识别此数据类型:如果您需要Theano张量函数,请将数据转换为支持的数字类型。 *
我对Theano非常陌生,所以我可能会以错误的方式思考这个问题。我真的很感激任何建议。
答案 0 :(得分:0)
在错误消息中
TypeError:泛型' SharedVariable'对象不可订阅。此共享变量包含一个Numpy数组,其中包含 dtype:' object' 。 Theano tensors目前无法识别此数据类型:如果您需要Theano张量函数,请将数据转换为支持的数字类型。
未正确定义作为theano.scan
传递给non_sequences
的共享变量。这是因为np.array(my_list)
返回的数组的dtype是 object ,而不是整数。这是因为my_list
的形状不规则。
用
my_list = [1,2,3,4]
,您的代码可以使用。