欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于MSELoss()與CrossEntropyLoss()的區(qū)別詳解

 更新時間:2020年01月02日 14:43:41   作者:Foneone  
今天小編就為大家分享一篇基于MSELoss()與CrossEntropyLoss()的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

基于pytorch來講

MSELoss()多用于回歸問題,也可以用于one_hotted編碼形式,

CrossEntropyLoss()名字為交叉熵損失函數,不用于one_hotted編碼形式

MSELoss()要求batch_x與batch_y的tensor都是FloatTensor類型

CrossEntropyLoss()要求batch_x為Float,batch_y為LongTensor類型

(1)CrossEntropyLoss() 舉例說明:

比如二分類問題,最后一層輸出的為2個值,比如下面的代碼:

class CNN (nn.Module ) :
  def __init__ ( self , hidden_size1 , output_size , dropout_p) :
    super ( CNN , self ).__init__ ( )
    self.hidden_size1 = hidden_size1
    self.output_size = output_size
    self.dropout_p = dropout_p
    
    self.conv1 = nn.Conv1d ( 1,8,3,padding =1) 
    self.fc1 = nn.Linear (8*500, self.hidden_size1 )
    self.out = nn.Linear (self.hidden_size1,self.output_size ) 
 
  
  def forward ( self , encoder_outputs ) :
    cnn_out = F.max_pool1d ( F.relu (self.conv1(encoder_outputs)),2) 
    cnn_out = F.dropout ( cnn_out ,self.dropout_p) #加一個dropout
    cnn_out = cnn_out.view (-1,8*500) 
    output_1 = torch.tanh ( self.fc1 ( cnn_out ) )
    output = self.out ( ouput_1)
    return output

最后的輸出結果為:

上面一個tensor為output結果,下面為target,沒有使用one_hotted編碼。

訓練過程如下:

cnn_optimizer = torch.optim.SGD(cnn.parameters(),learning_rate,momentum=0.9,\
              weight_decay=1e-5)
criterion = nn.CrossEntropyLoss()
 
def train ( input_variable , target_variable , cnn , cnn_optimizer , criterion ) :
  cnn_output = cnn( input_variable )
  print(cnn_output)
  print(target_variable)
  loss = criterion ( cnn_output , target_variable)
  cnn_optimizer.zero_grad ()
  loss.backward( )
  cnn_optimizer.step( )
  #print('loss: ',loss.item())
  return loss.item() #返回損失

說明CrossEntropyLoss()是output兩位為one_hotted編碼形式,但target不是one_hotted編碼形式。

(2)MSELoss() 舉例說明:

網絡結構不變,但是標簽是one_hotted編碼形式。下面的圖僅做說明,網絡結構不太對,出來的預測也不太對。

如果target不是one_hotted編碼形式會報錯,報的錯誤如下。

目前自己理解的兩者的區(qū)別,就是這樣的,至于多分類問題是不是也是樣的有待考察。

以上這篇基于MSELoss()與CrossEntropyLoss()的區(qū)別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python 3.6 中使用pdfminer解析pdf文件的實現

    Python 3.6 中使用pdfminer解析pdf文件的實現

    這篇文章主要介紹了Python 3.6 中使用pdfminer解析pdf文件的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 簡單介紹Ruby中的CGI編程

    簡單介紹Ruby中的CGI編程

    這篇文章主要介紹了簡單介紹Ruby中的CGI編程,包括創(chuàng)建Form表單等基本內容,需要的朋友可以參考下
    2015-04-04
  • python 獲取谷歌瀏覽器保存的密碼

    python 獲取谷歌瀏覽器保存的密碼

    這篇文章主要介紹了python 獲取谷歌瀏覽器保存的密碼的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python實現圖像識別功能

    python實現圖像識別功能

    這篇文章主要為大家詳細介紹了python實現圖像識別功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python中利用Future對象異步返回結果示例代碼

    python中利用Future對象異步返回結果示例代碼

    future是一種對象,表示異步執(zhí)行的操作。下面這篇文章主要給大家介紹了關于python中利用Future對象異步返回結果的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • python創(chuàng)建ArcGIS shape文件的實現

    python創(chuàng)建ArcGIS shape文件的實現

    今天小編就為大家分享一篇python創(chuàng)建ArcGIS shape文件的實現,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 使用 Python 實現微信公眾號粉絲遷移流程

    使用 Python 實現微信公眾號粉絲遷移流程

    近日,因公司業(yè)務需要,需將原兩個公眾號合并為一個,即要將其中一個公眾號(主要是粉絲)遷移到另一個公眾號。這篇文章主要介紹了使用 Python 實現微信公眾號粉絲遷移,需要的朋友可以參考下
    2018-01-01
  • python計算方程式根的方法

    python計算方程式根的方法

    這篇文章主要介紹了python計算方程式根的方法,涉及Python數學運算的相關技巧,需要的朋友可以參考下
    2015-05-05
  • PyQt5的PyQtGraph實踐系列3之實時數據更新繪制圖形

    PyQt5的PyQtGraph實踐系列3之實時數據更新繪制圖形

    這篇文章主要介紹了PyQt5的PyQtGraph實踐系列3之實時數據更新繪制圖形,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Python 中的結構模式匹配及重要性

    Python 中的結構模式匹配及重要性

    這篇文章主要介紹了Python 中的結構模式匹配,本篇文章介紹結構模式匹配及其在 Python 中的重要性,它還使用不同的模式來演示如何使用 match … case 語句,需要的朋友可以參考下
    2023-06-06

最新評論