在theano衍生品教程中:
http://deeplearning.net/software/theano/tutorial/gradients.html#tutcomputinggrads
Lop的例子在点积中没有明确的W矩阵值。事实上,在这种情况下,偏导数会删除W分量的值,因此不需要它们。
但是,尝试与Rop类似的事情会引发错误:
theano.gof.fg.MissingInputError :(“图表的输入,用于计算点(Elemwise {second,no_inplace} .0,),未提供且未给出值。
这有什么不同?
答案 0 :(得分:0)
Theano将尝试优化计算图,但它并不总是有效。
在Lop示例中,Theano可以检测到我们实际上并不需要W,但是当改为Rop时它就不能。
罗布泊的例子:
W = T.dmatrix('W')
v = T.dvector('v')
x = T.dvector('x')
y = T.dot(x, W)
VJ = T.Lop(y, W, v)
f = theano.function([v, x], VJ)
f([2, 2], [0, 1])
如果我只是将y = T.dot(x, W)
更改为y = T.dot(x, W**1)
,Theano将无法进行优化,并向我发出相同的错误消息,说我没有提供足够的参数。
实际上在Rop示例中,如果我们更改赋予W的值,它根本不会影响结果,因为Theano未能优化它。
P.S。我发现有时Theano的文件很不清楚。