某些场景下只需要计算梯度,不需要使用优化器执行优化,这时候仍然需要以优化器求梯度,很麻烦。如果能像pytorch一样可以直接使用tensor.backward就方便了
您好,jittor是有backward接口的,可以通过两种方法获得,第一种是直接jt.grad(loss, param)来获取梯度,第二种是通过optim.backward接口,然后通过optim.opt_grad获得梯度。
jittor之所以没有像pytorch那样提供基于张量的backward接口,其实是有原因的,第一种原因pytorch的backward是大水漫灌式的反传,性能低下,第二个原因是,不同的损失函数的梯度无法区分开来。
目前,通过optim.backward接口,是可以实现类似与backward的需求的,您可以贴出您的代码,我们给您提供修改意见:jittor — Jittor 1.3.1.24 文档
您可以加我微信:randonlang
请问您是如何以优化器求梯度的?我尝试借助优化器求如pytorch里retain_grad方法求出的中间变量的梯度,但始终求出为0,如果您能提供一些示例代码 我将不胜感激