Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deep learning 像素损失_Deep Learning_Computer Vision_Pytorch_Backpropagation_Gradient Descent - Fatal编程技术网

Deep learning 像素损失

Deep learning 像素损失,deep-learning,computer-vision,pytorch,backpropagation,gradient-descent,Deep Learning,Computer Vision,Pytorch,Backpropagation,Gradient Descent,在反向传播过程中,这些情况是否会产生不同的影响:- 将所有像素的损失相加,然后反向传播 所有像素上的平均损耗,然后反向传播 在所有像素上单独反向传播 我主要怀疑数值,但所有这些都会产生影响。1号和2号之间的区别基本上是:由于sum将导致大于mean,因此sum操作的梯度幅度将更大,但方向将相同 下面是一个小演示,让我们首先声明必要的变量: x = torch.tensor([4,1,3,7],dtype=torch.float32,requires_grad=True) target = tor

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

  • 将所有像素的损失相加,然后反向传播
  • 所有像素上的平均损耗,然后反向传播
  • 在所有像素上单独反向传播

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

    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)
    
    这将输出:
    张量([0.,-2.,-4,6.])

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

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

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

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