Theano函数使用'givens'属性引发ValueError

时间:2014-05-17 10:01:51

标签: python theano

我使用theano函数,并希望使用givens来迭代所有输入样本。代码如下:

index = T.scalar('index')
train_set = np.array([[0.2, 0.5, 0.01], [0.3, 0.91, 0.4], [0.1, 0.7, 0.22], 
                      [0.7, 0.54, 0.2], [0.1, 0.12, 0.3], [0.2, 0.52, 0.1], 
                      [0.12, 0.08, 0.4], [0.02, 0.7, 0.22], [0.71, 0.5, 0.2], 
                      [0.1, 0.42, 0.63]])
train = function(inputs=[index], outputs=cost, updates=updates, 
                 givens={x: train_set[index]})

它最终引发了一个错误:

ValueError: setting an array element with a sequence.

你能告诉我为什么,以及如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

问题是:train_set[index]

这里train_set是一个numpy ndarray并索引一个Theano变量。 NumPy不知道如何使用Theano变量。您必须将train_set转换为Theano变量,如共享变量:

train_set = theano.shared(train_set)

您还需要更改索引声明,因为Theano不支持索引的实际值:

index = T.iscalar()