千家信息网

pytorch如何使用交叉熵损失函数

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍pytorch如何使用交叉熵损失函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先必须将权重也转为Tensor的cuda格式;然后将该class_weigh
千家信息网最后更新 2026年11月03日pytorch如何使用交叉熵损失函数

这篇文章主要介绍pytorch如何使用交叉熵损失函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

首先

必须将权重也转为Tensor的cuda格式;

然后

将该class_weight作为交叉熵函数对应参数的输入值。

补充:关于pytorch的CrossEntropyLoss的weight参数

首先这个weight参数比想象中的要考虑的多

你可以试试下面代码

import torchimport torch.nn as nninputs = 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 torchimport torch.nn as nninputs = 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 torchimport torch.nn as nninputs = 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如何使用交叉熵损失函数"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

交叉 函数 参数 权重 损失 内容 篇文章 过程 细致 代码 价值 例子 兴趣 小伙 小伙伴 手动 数目 更多 格式 疑问 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州百单互联网科技有限公司 互联网和科技技术 科技创新与互联网经济 重庆互联网络科技 麻工互联网科技 互联网科技作文 致聘互联网科技 北京禾田雨橡互联网科技 互联网对科技的发展 湖南一路畅行互联网科技 乌苏新华互联网科技做什么的 中和天地互联网科技有限公司 中国互联网有什么科技 互联网科技数字货币 郑州欣桑互联网科技有限公司 山东大美朱楼互联网科技有限公司 宁波跨境商互联网科技有限公司 上海同邻互联网科技有限公司规模 互联网科技的前景 上海旺乐尼互联网科技有限公司 互联网科技会 银优互联网科技有限公司 四川狮子座互联网科技 玖二柒互联网科技公司待遇 成都铂石互联网科技做什么的 智腾互联网科技有限公司 云南省自由互联网科技有限公司 杭州披云加互联网科技有限公司 江苏互联网科技小贷 中国互联网公司的科技投入
0