婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > pytorch交叉熵損失函數的weight參數的使用

pytorch交叉熵損失函數的weight參數的使用

熱門標簽:400電話辦理哪種 開封語音外呼系統代理商 地圖標注線上如何操作 應電話機器人打電話違法嗎 河北防封卡電銷卡 開封自動外呼系統怎么收費 手機網頁嵌入地圖標注位置 天津電話機器人公司 電銷機器人的風險

首先

必須將權重也轉為Tensor的cuda格式;

然后

將該class_weight作為交叉熵函數對應參數的輸入值。

class_weight = torch.FloatTensor([0.13859937, 0.5821059, 0.63871904, 2.30220396, 7.1588294, 0]).cuda()

補充:關于pytorch的CrossEntropyLoss的weight參數

首先這個weight參數比想象中的要考慮的多

你可以試試下面代碼

import torch
import torch.nn as nn
inputs = torch.FloatTensor([0,1,0,0,0,1])
outputs = torch.LongTensor([0,1])
inputs = inputs.view((1,3,2))
outputs = outputs.view((1,2))
weight_CE = torch.FloatTensor([1,1,1])
ce = nn.CrossEntropyLoss(ignore_index=255,weight=weight_CE)
loss = ce(inputs,outputs)
print(loss)
tensor(1.4803)

這里的手動計算是:

loss1 = 0 + ln(e0 + e0 + e0) = 1.098

loss2 = 0 + ln(e1 + e0 + e1) = 1.86

求平均 = (loss1 *1 + loss2 *1)/ 2 = 1.4803

加權呢?

import torch
import torch.nn as nn
inputs = torch.FloatTensor([0,1,0,0,0,1])
outputs = torch.LongTensor([0,1])
inputs = inputs.view((1,3,2))
outputs = outputs.view((1,2))
weight_CE = torch.FloatTensor([1,2,3])
ce = nn.CrossEntropyLoss(ignore_index=255,weight=weight_CE)
loss = ce(inputs,outputs)
print(loss)
tensor(1.6075)

手算發現,并不是單純的那權重相乘:

loss1 = 0 + ln(e0 + e0 + e0) = 1.098

loss2 = 0 + ln(e1 + e0 + e1) = 1.86

求平均 = (loss1 * 1 + loss2 * 2)/ 2 = 2.4113

而是

loss1 = 0 + ln(e0 + e0 + e0) = 1.098

loss2 = 0 + ln(e1 + e0 + e1) = 1.86

求平均 = (loss1 *1 + loss2 *2) / 3 = 1.6075

發現了么,加權后,除以的是權重的和,不是數目的和。

我們再驗證一遍:

import torch
import torch.nn as nn
inputs = torch.FloatTensor([0,1,2,0,0,0,0,0,0,1,0,0.5])
outputs = torch.LongTensor([0,1,2,2])
inputs = inputs.view((1,3,4))
outputs = outputs.view((1,4))
weight_CE = torch.FloatTensor([1,2,3])
ce = nn.CrossEntropyLoss(weight=weight_CE)
# ce = nn.CrossEntropyLoss(ignore_index=255)
loss = ce(inputs,outputs)
print(loss)
tensor(1.5472)

手算:

loss1 = 0 + ln(e0 + e0 + e0) = 1.098

loss2 = 0 + ln(e1 + e0 + e1) = 1.86

loss3 = 0 + ln(e2 + e0 + e0) = 2.2395

loss4 = -0.5 + ln(e0.5 + e0 + e0) = 0.7943

求平均 = (loss1 * 1 + loss2 * 2+loss3 * 3+loss4 * 3) / 9 = 1.5472

可能有人對loss的CE計算過程有疑問,我這里細致寫寫交叉熵的計算過程,就拿最后一個例子的loss4的計算說明

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PyTorch的SoftMax交叉熵損失和梯度用法
  • pytorch中常用的損失函數用法說明
  • Pytorch十九種損失函數的使用詳解
  • pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解
  • Python機器學習pytorch交叉熵損失函數的深刻理解

標簽:成都 常州 山東 宿遷 駐馬店 六盤水 江蘇 蘭州

巨人網絡通訊聲明:本文標題《pytorch交叉熵損失函數的weight參數的使用》,本文關鍵詞  pytorch,交叉,熵,損失,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch交叉熵損失函數的weight參數的使用》相關的同類信息!
  • 本頁收集關于pytorch交叉熵損失函數的weight參數的使用的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 利川市| 两当县| 莱阳市| 高密市| 玉门市| 黄浦区| 吉水县| 德庆县| 桐梓县| 衢州市| 开封县| 万盛区| 孝感市| 栖霞市| 宝清县| 神农架林区| 江安县| 涟水县| 宿州市| 广西| 富裕县| 竹北市| 图们市| 贺兰县| 高碑店市| 于都县| 西盟| 栾川县| 和林格尔县| 龙门县| 巴南区| 滨州市| 乐业县| 禹城市| 沐川县| 泰宁县| 十堰市| 锡林郭勒盟| 武山县| 油尖旺区| 贞丰县|