pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解


Posted in Python onJanuary 02, 2020

公式

首先需要了解CrossEntropyLoss的计算过程,交叉熵的函数是这样的:

pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解

其中,其中yi表示真实的分类结果。这里只给出公式,关于CrossEntropyLoss的其他详细细节请参照其他博文。

测试代码(一维)

import torch
import torch.nn as nn
import math

criterion = nn.CrossEntropyLoss()
output = torch.randn(1, 5, requires_grad=True)
label = torch.empty(1, dtype=torch.long).random_(5)
loss = criterion(output, label)

print("网络输出为5类:")
print(output)
print("要计算label的类别:")
print(label)
print("计算loss的结果:")
print(loss)

first = 0
for i in range(1):
  first = -output[i][label[i]]
second = 0
for i in range(1):
  for j in range(5):
    second += math.exp(output[i][j])
res = 0
res = (first + math.log(second))
print("自己的计算结果:")
print(res)

pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解

测试代码(多维)

import torch
import torch.nn as nn
import math
criterion = nn.CrossEntropyLoss()
output = torch.randn(3, 5, requires_grad=True)
label = torch.empty(3, dtype=torch.long).random_(5)
loss = criterion(output, label)

print("网络输出为3个5类:")
print(output)
print("要计算loss的类别:")
print(label)
print("计算loss的结果:")
print(loss)

first = [0, 0, 0]
for i in range(3):
  first[i] = -output[i][label[i]]
second = [0, 0, 0]
for i in range(3):
  for j in range(5):
    second[i] += math.exp(output[i][j])
res = 0
for i in range(3):
  res += (first[i] + math.log(second[i]))
print("自己的计算结果:")
print(res/3)

pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解

nn.CrossEntropyLoss()中的计算方法

注意:在计算CrossEntropyLosss时,真实的label(一个标量)被处理成onehot编码的形式。

在pytorch中,CrossEntropyLoss计算公式为:

pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解

CrossEntropyLoss带权重的计算公式为(默认weight=None):

pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解

以上这篇pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
python生成随机mac地址的方法
Mar 16 Python
python中反射用法实例
Mar 27 Python
Python文件去除注释的方法
May 25 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
django-初始配置(纯手写)详解
Jul 30 Python
Python中私有属性的定义方式
Mar 05 Python
python with语句的原理与用法详解
Mar 30 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 Python
基于torch.where和布尔索引的速度比较
Jan 02 #Python
Python魔法方法 容器部方法详解
Jan 02 #Python
python 图像的离散傅立叶变换实例
Jan 02 #Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 #Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 #Python
pytorch实现onehot编码转为普通label标签
Jan 02 #Python
pytorch标签转onehot形式实例
Jan 02 #Python
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
php简单实现查询数据库返回json数据
2015/04/16 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
jQuery简单创建节点的方法
2016/09/09 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python删除文本中行数标签的方法
2018/05/31 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
武汉瑞得软件笔试题
2015/10/27 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
结婚仪式主持词
2015/06/29 职场文书
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS