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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Pytorch基础(九)——损失函数

發(fā)布時間:2023/12/10 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch基础(九)——损失函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、概念

損失函數(shù)在深度學(xué)習(xí)領(lǐng)域是用來計算搭建模型預(yù)測的輸出值和真實值之間的誤差。
具體實現(xiàn)過程:在一個批次(batch)前向傳播完成后,得到預(yù)測值,然后損失函數(shù)計算出預(yù)測值和真實值之間的差值,反向傳播去更新權(quán)值和偏置等參數(shù),以降低差值,不斷向真實值接近,最終得到效果良好的模型。
常見的損失函數(shù)包括:MSE(均方差, 也可以叫L2Loss),Cross Entropy Loss(交叉熵),L1 Loss(L1平均絕對值誤差),Smooth L1 Loss(平滑的L1 loss),BCELoss (Binary Cross Entropy)等。下面分別對這些損失函數(shù)舉例說明。
只寫了一部分,后面陸續(xù)增加。。

二、Pytorch舉例

2.1 MSELoss

MSELoss 就是計算真實值和預(yù)測值的均方差,也可以叫L2 Loss。
特點:MSE收斂速度比較快,能提供最大似然估計,是回歸問題、模式識別、圖像處理中最常使用的損失函數(shù)。

import torch from torch import nn from torch.nn import MSELossinputs = torch.tensor([1, 2, 3], dtype=torch.float32) outputs = torch.tensor([2, 2, 4], dtype=torch.float32)# MSE # size_average為True,表示計算批前向傳播后損失函數(shù)的平均值,如果為False,則計算損失函數(shù)的和。 # 同樣,reduce為True,返回標量;reduce為False, size_average參數(shù)失效,直接返回向量形式的loss # reduction目的為減少tensor中元素的數(shù)量。為none,表示不減少;為'sum',表示求和;為'mean',表示求平均值loss_mse = nn.MSELoss() result_mse = loss_mse(inputs, outputs) print(result_mse)loss_mse1 = nn.MSELoss(reduction='sum') result_mse1 = loss_mse1(inputs, outputs) print(result_mse1)loss_mse2 = nn.MSELoss(size_average=False, reduce=False, reduction='sum') result_mse2 = loss_mse2(inputs, outputs) print(result_mse2)

輸出

tensor(0.6667) tensor(2.) tensor([1., 0., 1.])

2.2 L1Loss

L1Loss是計算預(yù)測值和真實值的平均絕對誤差。
特點:對異常點的魯棒性更強,但在殘差為零處不可導(dǎo),收斂速度比較慢。

loss_l1 = L1Loss() result_l1 = loss_l1(inputs, outputs) print(result_l1) tensor(0.6667)

2.3 SmoothL1loss

SmoothL1loss是L1Loss 和MSE的混合,最早在Fast R-CNN中提出。
特點:收斂速度穩(wěn)定,模型更容易收斂到局部最優(yōu),防止梯度爆炸。

# beta默認為1,表示指定要在L1和L2損失之間更改的閾值。 loss_smol1 = SmoothL1Loss() result_smol1 = loss_smol1(inputs, outputs) print(result_smol1) tensor(0.3333)

2.4 CrossEntropyLoss

CrossEntropyLoss表示概率分布之間的距離,當交叉熵越小說明二者之間越接近,對于高維輸入比較有用。一般都需要激活函數(shù)將輸入轉(zhuǎn)變?yōu)?#xff08;0,1)之間。
經(jīng)典公式:

其實這個表示BCELoss(二分類交叉熵)。

pytorch的公式表示的是多分類問題:
1)當目標targets 包括類索引,ignore_index才可以設(shè)置.

2)表示每個類別的概率;當每個小批項目需要超過單個類別的標簽時非常有用,例如混合標簽、標簽平滑等。

其中: x為輸入值,y為目標值,C代表類別數(shù)量,w為權(quán)值參數(shù)。

# weight :為每個類指定的手動重縮放權(quán)重。 # ignore_index:ignore_index表示指定忽略目標值,但不影響輸入梯度。 # label_smoothing :在[0.0,1.0]之間的浮點型。指定計算損失時的平滑量,其中 0.0 表示不平滑。 如重新思考計算機視覺的初始架構(gòu)中所述,目標成為原始基本事實和均勻分布的混合。 # 交叉熵損失 x = torch.tensor([0.5, 0.2, 0.3]) x = torch.reshape(x, (1, 3)) print(x) y = torch.tensor([1])loss_cross = CrossEntropyLoss() result_cross = loss_cross(x, y) print(result_cross) tensor([[0.5000, 0.2000, 0.3000]]) tensor(1.2398)

三、參考文章

目標檢測回歸損失函數(shù)簡介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
損失函數(shù)(八)

總結(jié)

以上是生活随笔為你收集整理的Pytorch基础(九)——损失函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。