丢失像素

问题描述 投票:1回答:1

在反向传播期间,这些案例会有不同的效果: -

  1. 总结所有像素的损失然后反向传播。
  2. 所有像素的平均损失然后反向传播
  3. 反向传播所有像素。

我对数值的主要怀疑,但所有这些都会产生影响。

deep-learning computer-vision pytorch backpropagation gradient-descent
1个回答
1
投票

1号和2号之间的区别基本上是:由于sum将导致大于mean,因此sum操作的梯度幅度将更大,但方向将相同。

这是一个小演示,让我们首先声明必要的变量:

x = torch.tensor([4,1,3,7],dtype=torch.float32,requires_grad=True)
target = torch.tensor([4,2,5,4],dtype=torch.float32)

现在让我们使用x使用L2损失计算sum的梯度:

loss = ((x-target)**2).sum()
loss.backward()
print(x.grad)

输出:tensor([ 0., -2., -4., 6.])

现在使用mean :(重置x毕业后)

loss = ((x-target)**2).mean()
loss.backward()
print(x.grad)

这个输出:tensor([ 0.0000, -0.5000, -1.0000, 1.5000])注意后来渐变是如何恰好是sum的1/4,这是因为这里的张量包含4个元素。

关于第三种选择,如果我理解正确,那是不可能的。在使用summean或其他任何内容将单个像素错误聚合到标量之前,您无法反向传播。

© www.soinside.com 2019 - 2024. All rights reserved.