使用theano

时间:2016-12-11 09:31:15

标签: python python-2.7 theano theano.scan

我有一个清单:

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非常陌生,所以我可能会以错误的方式思考这个问题。我真的很感激任何建议。

1 个答案:

答案 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]

,您的代码可以使用。