张量变量索引

时间:2016-02-01 14:41:32

标签: python theano

我试图使用符号变量的索引进行一些符号计算。

X = T.matrix('X')
y = T.matrix('y')
z = T.dot(T.dot(X,y[0]),y[1]).norm(L=2)
callable_function = theano.function([y,X], z)
callable_function(np.array([np.array([[3],[5]]),np.array([[4,1]])]),np.array([1,2]))

我正在

AttributeError: ('Bad input argument to theano function with name "C:/Users/LIKAN/PycharmProjects/deepEEG/test.py:17"  at index 0(0-based)', "'float' object has no attribute 'dtype'")

如何正确使用符号变量索引?

1 个答案:

答案 0 :(得分:1)

您将yX都声明为矩阵,但您对已编译的Theano函数的输入是对象数组和向量。

np.array([np.array([[3],[5]]),np.array([[4,1]])])是一个对象数组,因为它构造为numpy数组的数组。请注意np.array([np.array([[3],[5]]),np.array([[4,1]])]).dtype == object

要创建矩阵,只需在numpy数组构造中使用多维数组。你甚至不需要创建numpy数组,只需传递vanilla Python列表。由于你的第二个参数(对于X)是一个向量,我假设输入值是正确的,并且符号变量声明是不正确的。通过这些更改,将运行以下代码:

import numpy as np
import theano
import theano.tensor as T

X = T.vector('X')
y = T.matrix('y')
z = T.dot(T.dot(X,y[0]),y[1]).norm(L=2)
callable_function = theano.function([y,X], z)
print callable_function([[3,5],[4,1]], [1,2])