基于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获取GY-85九轴模块信息示例
Dec 05 Python
跟老齐学Python之编写类之四再论继承
Oct 11 Python
详解Python字符串对象的实现
Dec 24 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
Python内存管理实例分析
Jul 10 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Pytorch: 自定义网络层实例
Jan 07 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
python中如何写类
Jun 29 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 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 空格,换行,跳格使用说明
2009/12/18 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
angular4自定义组件详解
2017/09/28 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
pymysql的简单封装代码实例
2020/01/08 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
工程监理应届生求职信
2013/11/09 职场文书
给国外客户的邀请函
2014/01/30 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
初三学生评语大全
2014/04/24 职场文书
工业设计专业自荐书
2014/06/05 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
python井字棋游戏实现人机对战
2022/04/28 Python