基于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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
用Python和MD5实现网站挂马检测程序
Mar 13 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
python opencv实现信用卡的数字识别
Jan 12 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python基于Tkinter编写crc校验工具
May 06 Python
浅谈Python中的模块
Jun 10 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
Python如何让字典保持有序排列
Apr 29 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 unset全局变量运用问题的深入解析
2013/06/17 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python中replace方法实例分析
2014/08/20 Python
python 发送json数据操作实例分析
2019/10/15 Python
python如何实现复制目录到指定目录
2020/02/13 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
劳动者解除劳动合同通知书
2015/04/16 职场文书
观看建国大业观后感
2015/06/01 职场文书
党课主持词大全
2015/06/30 职场文书
基于Python实现nc批量转tif格式
2022/08/14 Python