您好,登錄后才能下訂單哦!
小編給大家分享一下pytorch如何實現cross entropy損失函數計算方式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
均方損失函數:
這里 loss, x, y 的維度是一樣的,可以是向量或者矩陣,i 是下標。
很多的 loss 函數都有 size_average 和 reduce 兩個布爾類型的參數。因為一般損失函數都是直接計算 batch 的數據,因此返回的 loss 結果都是維度為 (batch_size, ) 的向量。
(1)如果 reduce = False,那么 size_average 參數失效,直接返回向量形式的 loss
(2)如果 reduce = True,那么 loss 返回的是標量
a)如果 size_average = True,返回 loss.mean(); b)如果 size_average = False,返回 loss.sum();
注意:默認情況下, reduce = True,size_average = True
import torch import numpy as np
1、返回向量
loss_fn = torch.nn.MSELoss(reduce=False, size_average=False)
a=np.array([[1,2],[3,4]]) b=np.array([[2,3],[4,5]])
input = torch.autograd.Variable(torch.from_numpy(a)) target = torch.autograd.Variable(torch.from_numpy(b))
這里將Variable類型統一為float()(tensor類型也是調用xxx.float())
loss = loss_fn(input.float(), target.float())
print(loss)
tensor([[ 1., 1.], [ 1., 1.]])
2、返回平均值
a=np.array([[1,2],[3,4]]) b=np.array([[2,3],[4,4]])
loss_fn = torch.nn.MSELoss(reduce=True, size_average=True)
input = torch.autograd.Variable(torch.from_numpy(a)) target = torch.autograd.Variable(torch.from_numpy(b))
loss = loss_fn(input.float(), target.float())
print(loss)
tensor(0.7500)
1.PyTorch是相當簡潔且高效快速的框架;2.設計追求最少的封裝;3.設計符合人類思維,它讓用戶盡可能地專注于實現自己的想法;4.與google的Tensorflow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新;5.PyTorch作者親自維護的論壇 供用戶交流和求教問題6.入門簡單
以上是“pytorch如何實現cross entropy損失函數計算方式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。