日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

randn函数加噪声_语义分割中常用的损失函数1(基础篇)

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 randn函数加噪声_语义分割中常用的损失函数1(基础篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、L1、L2 loss (分割中不常用,主要用于回歸問題)

  • L1 Loss
  • L1 Loss 主要用來計算 input x 和 target y 的逐元素間差值的平均絕對值.

    pytorch表示為:

    • torch.nn.functional.l1_loss(input, target, size_average=True)

    size_average主要是考慮到minibatch的情況下,需要求平均。

    loss = nn.L1Loss() input = torch.randn(3, 5, requires_grad=True) target = torch.randn(3, 5) output = loss(input, target) #是一個標量 output.backward() # 求這個標量loss對每個input元素的梯度 可以用input.grad顯示出來L2 損失(MSE loss)L2 Loss

    L2 loss

    L2 Loss 主要用來計算 input x 和 target y 的逐元素間差值平方的平均值.

    pytorch中表示為:

    • torch.nn.functional.mse_loss(input, target, size_average=True)

    具體應用不再介紹。

    二、交叉熵損失

    首先介紹一下交叉熵損失函數的由來,其中將介紹為什么交叉熵可以用于分類或分割,以及在one-hot多類別分類以及0-1編碼二分類之間的區別;

    1、從KL散度到交叉熵損失

    如果我們對于同一個隨機變量 x 有兩個單獨的概率分布 P(x) 和 Q(x),我們可以使用 KL 散度(Kullback-Leibler (KL) divergence)來衡量這兩個分布的差異:

    變形可以得到:

    等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:

    在一般的機器學習任務中,我們需要評估label和predicts之間的差距;上式中:P(x)代表label、q(x)代表predicts;由于label本身的熵是不變的,因此我們只需要關注后面的交叉熵就可以了。所以一般機器學習任務中直接使用交叉熵作為loss,用于評估模型。

    2. 多分類任務中的one-hot編碼下的交叉熵(當然one-hot也可以用于二分類)

    首先介紹softmax操作,如圖:

    softmax的輸出是一種歸一化的分類概率,它將輸出z首先經過指數級別進行差別放大,之后歸一化到0到1之間。可以讓大的數變得更大,小的數變得更小,最終所有的值歸一化到0、1之間。

    在數學上:

    直觀上看:

    如何知道softmax的輸出和真實label之間的差距呢?(計算交叉熵損失)

    計算出來的y和y hat都是兩個vector,和都是1,并且都相同的維度,可以理解為兩個離散的概率分布。這樣就可以衡量softmax輸出的概率分布和label的one-hot分布之間的差距。使用交叉熵。

    one-hot下的交叉熵表示為(上面z符號用x表示了哈):

    因為除了label位置對應的y hat為1,其余均是0;最終只剩一項

    ,而y label的值就是

    換個角度:對于這個loss,我們希望的是x label越來越大,其他x項越來越小;loss得到之后,更新都是原有的值減去lr*梯度;需要類別x label對應的梯度是負值,其他對應的梯度為正值。從loss可以很容易看出來哈!!!

    pytorch中與Cross Entropy相關的loss Function(one-hot形式):

    • CrossEntropyLoss: combines LogSoftMax and NLLLoss in one single class,也就是說我們的網絡不需要在最后一層加任何輸出層,該loss Function為我們打包好了;
    • NLLLoss: 也就是negative log likelihood loss,如果需要得到log分布,則需要在網絡的最后一層加上LogSoftmax
    • NLLLoss2d: 二維的negative log likelihood loss,多用于分割問題(目前已經整合到NLLLoss)

    3. 二分類0-1編碼:output的編碼不是one-hot,只是0代表1類,1代表一類;

    真實的分布就是0和1;

    預測的分布就是:如果是1的話就是f(x),0的話自然就是1-f(x);

    我們希望這個loss損失達到最大值;

    將上式進行歸納:

    本質上就是交叉熵在伯努利分布上的表現形式,即:

    二分類用的交叉熵,用的時候需要在該層前面加上 Sigmoid 函數。將輸出值變到0到1之間;

    總結

    以上是生活随笔為你收集整理的randn函数加噪声_语义分割中常用的损失函数1(基础篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。