Lop 不需要矩阵值?
Matrix value not needed for Lop?
theano 导数教程在这里:
http://deeplearning.net/software/theano/tutorial/gradients.html#tutcomputinggrads
Lop 的示例在点积中没有 W 矩阵的显式值的情况下工作。而且,事实上,这种情况下的偏导数确实删除了 W 分量的值,因此不需要它们。
但是,尝试使用 Rop 进行类似操作会引发错误:
theano.gof.fg.MissingInputError: ("图形的输入,用于计算点(Elemwise{second,no_inplace}.0, ),未提供且未给出值。
这有什么不同?
Theano 会尝试优化计算图,但并不总是有效。
在 Lop 示例中,Theano 可以检测到我们实际上并不需要那个 W,但是当更改为 Rop 时,它就检测不到了。
Lop 示例:
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 文档有时很不清楚。
theano 导数教程在这里:
http://deeplearning.net/software/theano/tutorial/gradients.html#tutcomputinggrads
Lop 的示例在点积中没有 W 矩阵的显式值的情况下工作。而且,事实上,这种情况下的偏导数确实删除了 W 分量的值,因此不需要它们。
但是,尝试使用 Rop 进行类似操作会引发错误:
theano.gof.fg.MissingInputError: ("图形的输入,用于计算点(Elemwise{second,no_inplace}.0, ),未提供且未给出值。
这有什么不同?
Theano 会尝试优化计算图,但并不总是有效。
在 Lop 示例中,Theano 可以检测到我们实际上并不需要那个 W,但是当更改为 Rop 时,它就检测不到了。
Lop 示例:
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 文档有时很不清楚。