基于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列表list数组array用法实例解析
Oct 28 Python
Python中编写ORM框架的入门指引
Apr 29 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
python模拟事件触发机制详解
Jan 19 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
使用tensorflow实现线性回归
Sep 08 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
E路文章系统PHP
2006/12/11 PHP
php下MYSQL limit的优化
2008/01/10 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
python发腾讯微博代码分享
2014/01/10 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Windows下安装Scrapy
2018/10/17 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python实现在线翻译功能
2020/03/03 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
客户服务经理岗位职责
2014/01/29 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
你会写请假条吗?
2019/06/26 职场文书
python基础之爬虫入门
2021/05/10 Python
Python绘画好看的星空图
2022/03/17 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers