預測任務--Pytorch常用損失函數


# Pytorch常用損失函數

model = nn.Sigmoid()
# 優化器設置 ,並傳入模型參數和相應的學習率
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

# 常用損失函數
# L1Loss(L1 norm) 創建一個criterion計算input x和target y的每個元素的平均絕對誤差(mean absolute error (MAE))
criterion = nn.L1Loss()
input = torch.randn(1, 2, requires_grad=True)#tensor([[-0.0625, -2.1603]], requires_grad=True)
target = torch.randn(1, 2)#tensor([[0.6789, 0.9831]])
loss = criterion(input, target)#tensor(1.9424, grad_fn=<L1LossBackward>)
# output = (|-0.0625-0.6789| + |-2.1603-0.9831|) / 2 = 1.9424
# 反向傳播與優化
# 清空上一步的殘余更新參數值
optimizer.zero_grad()
# 反向傳播
loss.backward()
# 將參數更新值施加到model的parameters上
optimizer.step()


# MSELoss(L2 norm)  創建一個criterion計算input x和target y的每個元素的均方誤差(mean absolute error (MAE))
criterion = nn.MSELoss()
input = torch.randn(1, 2, requires_grad=True)#tensor([[-1.4445, -2.4888]], requires_grad=True)
target = torch.randn(1, 2)#tensor([[ 0.7117, -0.1200]])
loss = criterion(input, target)#tensor(5.1303, grad_fn=<MseLossBackward>)
# output = ( (-1.4445-0.7117)2 + ( -2.4888 + 0.1200 )2 ) / 2 = 5.1303
# 反向傳播與優化
# 清空上一步的殘余更新參數值
optimizer.zero_grad()
# 反向傳播
loss.backward()
# 將參數更新值施加到model的parameters上
optimizer.step()


# SmoothL1Loss  創建一個criterion,如果絕對元素誤差低於1,則使用平方項,否則使用L1項。與MSELoss相比,它對異常值的敏感度較低; 在某些情況下,它可以防止梯度的爆炸式增長
criterion = nn.SmoothL1Loss()
input = torch.randn([2, 3, 32, 32], requires_grad=True)
target = torch.randn([2, 3, 32, 32])
loss = criterion(input, target)
# 反向傳播與優化
# 清空上一步的殘余更新參數值
optimizer.zero_grad()
# 反向傳播
loss.backward()
# 將參數更新值施加到model的parameters上
optimizer.step()

# torch.randn 與 torch.rand
# 標准正態分布  返回一個張量,包含了從標准正態分布(均值為0,方差為1,即高斯白噪聲)中抽取的一組隨機數。
x1 = torch.randn([2, 3, 32, 32])
# 均勻分布  返回一個張量,包含了從區間[0, 1)的均勻分布中抽取的一組隨機數。
x2 = torch.rand([2, 3, 32, 32])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM