基于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中ConfigParse模块的用法
Sep 29 Python
python单例模式实例分析
Apr 08 Python
python从入门到精通(DAY 1)
Dec 20 Python
Python smtplib实现发送邮件功能
May 22 Python
Django框架实现逆向解析url的方法
Jul 04 Python
Python中的集合介绍
Jan 28 Python
django云端留言板实例详解
Jul 22 Python
Python读取YAML文件过程详解
Dec 30 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
pycharm实现猜数游戏
Dec 07 Python
Django展示可视化图表的多种方式
Apr 08 Python
Python Pandas知识点之缺失值处理详解
May 11 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使用百度ping服务代码实例
2014/06/19 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP读取Excel类文件
2017/05/15 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
忠诚教育心得体会
2014/09/03 职场文书
工人先进事迹材料
2014/12/26 职场文书
售后服务质量承诺书
2015/04/29 职场文书
《风筝》教学反思
2016/02/23 职场文书