theano 的点积维度问题
Dot product dimension issue with theano
这是我关于 Whosebug 的第一个问题。希望它符合预期的格式。
我只是想创建一个函数来计算矩阵和向量之间的点积:
A = T.matrix()
B = T.vector()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([[1],[0]])
f = function([A,B],C)
当我向产品询问 numpy 时,我没有遇到任何问题。 numpy.dot(a,b)
returns 我的预期 array([[1],[3]])
但是当我向 Theano 询问 f(a,b)
时,我遇到了这个错误:TypeError: ('Bad input argument to theano function with name "<stdin>:1" at index 1(0-based)', 'Wrong number of dimensions: expected 1, got 2 with shape (2, 1).')
我的理解是,Theano 打字预期我的 Y
声明为向量必须是一维的。
因此,我尝试使用 b = numpy.array([1,0])
代替。也许 theano 会明白它必须是一个列才能计算?
现在我得到的结果是array([[ 2., 2.],[ 4., 4.]])
,这对我来说更是一个谜。
我找到了类似的主题,但 none 有一个我能理解的解释。我知道这对你们中的许多人来说一定很明显,但我很感激您的帮助!
当您键入以下内容时
b = numpy.array([1,0])
它内部创建的是一个形状为 Rx1 的列矩阵。这就是向量的一般表示方式。
现在当您输入时,
b = numpy.array([[1],[0]])
然后将它传递给函数 f,它会抛出一个错误,因为它需要一个 Vector 而你传递的是一个 Matrix 作为第二个参数。将 B 更改为类型矩阵,它工作正常。
所以,要么这样做:-
A = T.matrix()
B = T.matrix()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([[1], [0]])
f = function([A,B],C)
print f(a,b)
或者您可以将 B 本身视为向量,并传递一个向量
A = T.matrix()
B = T.vector()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([1,0])
f = function([A,B],C)
print f(a,b)
希望对您有所帮助!
这是我关于 Whosebug 的第一个问题。希望它符合预期的格式。
我只是想创建一个函数来计算矩阵和向量之间的点积:
A = T.matrix()
B = T.vector()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([[1],[0]])
f = function([A,B],C)
当我向产品询问 numpy 时,我没有遇到任何问题。 numpy.dot(a,b)
returns 我的预期 array([[1],[3]])
但是当我向 Theano 询问 f(a,b)
时,我遇到了这个错误:TypeError: ('Bad input argument to theano function with name "<stdin>:1" at index 1(0-based)', 'Wrong number of dimensions: expected 1, got 2 with shape (2, 1).')
我的理解是,Theano 打字预期我的 Y
声明为向量必须是一维的。
因此,我尝试使用 b = numpy.array([1,0])
代替。也许 theano 会明白它必须是一个列才能计算?
现在我得到的结果是array([[ 2., 2.],[ 4., 4.]])
,这对我来说更是一个谜。
我找到了类似的主题,但 none 有一个我能理解的解释。我知道这对你们中的许多人来说一定很明显,但我很感激您的帮助!
当您键入以下内容时
b = numpy.array([1,0])
它内部创建的是一个形状为 Rx1 的列矩阵。这就是向量的一般表示方式。
现在当您输入时,
b = numpy.array([[1],[0]])
然后将它传递给函数 f,它会抛出一个错误,因为它需要一个 Vector 而你传递的是一个 Matrix 作为第二个参数。将 B 更改为类型矩阵,它工作正常。
所以,要么这样做:-
A = T.matrix()
B = T.matrix()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([[1], [0]])
f = function([A,B],C)
print f(a,b)
或者您可以将 B 本身视为向量,并传递一个向量
A = T.matrix()
B = T.vector()
C = T.dot(A,B)
a = numpy.array([[1,2],[3,4]])
b = numpy.array([1,0])
f = function([A,B],C)
print f(a,b)
希望对您有所帮助!