基于MSELoss()与CrossEntropyLoss()的区别详解


Posted in Python onJanuary 02, 2020

基于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

最后的输出结果为:

基于MSELoss()与CrossEntropyLoss()的区别详解

上面一个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编码形式。下面的图仅做说明,网络结构不太对,出来的预测也不太对。

基于MSELoss()与CrossEntropyLoss()的区别详解

如果target不是one_hotted编码形式会报错,报的错误如下。

基于MSELoss()与CrossEntropyLoss()的区别详解

目前自己理解的两者的区别,就是这样的,至于多分类问题是不是也是样的有待考察。

以上这篇基于MSELoss()与CrossEntropyLoss()的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python实现面向对像的ASP程序实例
Nov 10 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 Python
python如何获取服务器硬件信息
May 11 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
python获取地震信息 微信实时推送
Jun 18 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python实现图像全景拼接
Mar 27 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
python matlab库简单用法讲解
Dec 31 Python
python使用SQLAlchemy操作MySQL
Jan 02 #Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 #Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 #Python
Python基础之函数基本用法与进阶详解
Jan 02 #Python
Python面向对象原理与基础语法详解
Jan 02 #Python
Pytorch 的损失函数Loss function使用详解
Jan 02 #Python
Python面向对象封装操作案例详解 II
Jan 02 #Python
You might like
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
python简单判断序列是否为空的方法
2015/06/30 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Python初学者常见错误详解
2019/07/02 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
python中pyplot基础图标函数整理
2020/11/10 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
党员志愿者活动方案
2014/08/28 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
审美与表现自我评价
2015/03/09 职场文书
2015年司法所工作总结
2015/04/27 职场文书
遗失证明范文
2015/06/19 职场文书
python缺失值的解决方法总结
2021/06/09 Python
分析Python list操作为什么会错误
2021/11/17 Python
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis