【问题标题】:Loss over pixels像素损失
【发布时间】:2023-03-28 17:55:02
【问题描述】:

在反向传播过程中,这些情况是否会产生不同的影响:-

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

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

【问题讨论】:

    标签: deep-learning computer-vision pytorch backpropagation gradient-descent


    【解决方案1】:

    no 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)
    

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

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

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

    现在使用mean:(重置xgrad后)

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

    这个输出:tensor([ 0.0000, -0.5000, -1.0000, 1.5000]) 注意后面的梯度正好是sum 的 1/4,这是因为这里的张量包含 4 个元素。

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

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 2018-10-19
      • 2018-09-23
      • 2017-07-24
      • 2020-07-28
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多