Hi,请问如何手动对一个core_avx.VarBase set gradient? 我看到只有set_value 函数 和 获得gradient 的函数, 但没有发现set gradient
谢谢
dzjeubhm1#
VarBase 是一个op的输入或者输出吧,可以直接对这个variable stop_gradient
3z6pesqy2#
@ceci3 我不是想stop gradient, 而是修改gradient 的值。 例如在torch里面的tensor, tensor.grad.data 可以直接对gradient 赋值, 想知道paddle 的VarBase 对象有无类似对gradient 赋值的方法
yhived7q3#
获得gradient之后调用set_value就可以了吧,比如 a.gradient().set_value()
omhiaaxx4#
@ceci3 谢谢拉
velaa5lx5#
@ceci3 a.gradient().set_value() 这个方法应该不行, 因为a.gradient() 在backwards 之前是None, 我希望的是类似pytorch 的save_for_backward函数,这样我可以手动硬set 这个variable的gradient 值。 有无办法实现 类似 pytorch 这个例子呢? https://pytorch.org/tutorials/beginner/examples_autograd/two_layer_net_custom_function.html
h6my8fg26#
save_for_backward 在上面的示例里是保存前向的input吧? 相应接口在paddle里是没有的.. 或者可以通过hook试下?
zyfwsgd67#
我也遇到了相似的需求,请问楼主解决了吗,怎么硬设置gradient?
kxe2p93d8#
我展示了一个方法在issue #32500, 仅供参考!
8条答案
按热度按时间dzjeubhm1#
VarBase 是一个op的输入或者输出吧,可以直接对这个variable stop_gradient
3z6pesqy2#
@ceci3 我不是想stop gradient, 而是修改gradient 的值。 例如在torch里面的tensor, tensor.grad.data 可以直接对gradient 赋值, 想知道paddle 的VarBase 对象有无类似对gradient 赋值的方法
yhived7q3#
获得gradient之后调用set_value就可以了吧,比如 a.gradient().set_value()
omhiaaxx4#
@ceci3 谢谢拉
velaa5lx5#
@ceci3 a.gradient().set_value() 这个方法应该不行, 因为a.gradient() 在backwards 之前是None, 我希望的是类似pytorch 的save_for_backward函数,这样我可以手动硬set 这个variable的gradient 值。 有无办法实现 类似 pytorch 这个例子呢? https://pytorch.org/tutorials/beginner/examples_autograd/two_layer_net_custom_function.html
谢谢
h6my8fg26#
save_for_backward 在上面的示例里是保存前向的input吧? 相应接口在paddle里是没有的.. 或者可以通过hook试下?
zyfwsgd67#
我也遇到了相似的需求,请问楼主解决了吗,怎么硬设置gradient?
kxe2p93d8#
我展示了一个方法在issue #32500, 仅供参考!