如何只反向传播部分样本loss

mac2022-06-30  74

import torch # 假设预测值为a a = torch.tensor([1, 2, 3, 4], dtype=torch.float) a.requires_grad_(True) # 假设groud truth为[2, 2, 2, 2] y = torch.tensor([2, 2, 2, 2], dtype=torch.float) # loss采用L2 loss = (y - a) * (y - a) / 2 print(loss) gradients = torch.tensor([1, 1, 1, 1], dtype=torch.float) # loss.backward(gradients) # print(a.grad) # 结果为[-1., 0., 1., 2.] loss[loss<1] = 0 print(loss) loss.backward(gradients) print(a.grad)

 结果:

tensor([0.5000, 0.0000, 0.5000, 2.0000], grad_fn=<DivBackward0>) tensor([0., 0., 0., 2.], grad_fn=<PutBackward>) tensor([-0., -0., 0., 2.])

转载于:https://www.cnblogs.com/leebxo/p/11296485.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)