Python theano:R-操作是如何工作的?
Python theano: how does the R-operation work?
我正在 theano 上执行以下操作:
>>> import theano
>>> import theano.tensor as T
>>> x = T.dvector('x')
>>> y = T.dvector('y')
>>> f = T.dot(x,y)
>>> Jy= T.Rop(f,x,y)
>>> fun = theano.function([x,y],Jy)
>>> fun([1000,2000,3000],[2,4,8])
array(84.0)
但是,如果我手动计算一个简单的例子,我有:
x = [x1,x2,x3]
y = [y1,y2,y3]
f = [x1y1,x2y2,x3y3]
df/dx = |y1, 0, 0|
|0, y2, 0|
|0, 0,y3|
(df/dx)*y = [y1^2, y2^2, y3^2]
因此,我希望得到 [4, 16, 64]
的结果,但我却得到了这些结果的总和。 Rop
的计算方式有何不同?
差异是由于误解了 theano.dot
在您的示例代码中所做的。
theano.dot(x, y)
等于标量 34000
给定您的示例输入,因为它计算的是向量内积而不是元素级积,正如您的示例所暗示的那样。
通过改变
可以获得你期望的结果
f = T.dot(x,y)
到
f = x * y
我正在 theano 上执行以下操作:
>>> import theano
>>> import theano.tensor as T
>>> x = T.dvector('x')
>>> y = T.dvector('y')
>>> f = T.dot(x,y)
>>> Jy= T.Rop(f,x,y)
>>> fun = theano.function([x,y],Jy)
>>> fun([1000,2000,3000],[2,4,8])
array(84.0)
但是,如果我手动计算一个简单的例子,我有:
x = [x1,x2,x3]
y = [y1,y2,y3]
f = [x1y1,x2y2,x3y3]
df/dx = |y1, 0, 0|
|0, y2, 0|
|0, 0,y3|
(df/dx)*y = [y1^2, y2^2, y3^2]
因此,我希望得到 [4, 16, 64]
的结果,但我却得到了这些结果的总和。 Rop
的计算方式有何不同?
差异是由于误解了 theano.dot
在您的示例代码中所做的。
theano.dot(x, y)
等于标量 34000
给定您的示例输入,因为它计算的是向量内积而不是元素级积,正如您的示例所暗示的那样。
通过改变
可以获得你期望的结果f = T.dot(x,y)
到
f = x * y