基于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实现对excel进行数据剔除操作实例
Dec 07 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
对python中的pop函数和append函数详解
May 04 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
python pandas生成时间列表
Jun 29 Python
Django框架安装方法图文详解
Nov 04 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
Python中如何引入第三方模块
May 27 Python
django form和field具体方法和属性说明
Jul 09 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
德生PL660的电路分析和打磨
2021/03/02 无线电
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
PHP中header用法小结
2016/05/23 PHP
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
Vue实现手机计算器
2020/08/17 Javascript
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
阿里云:Aliyun.com
2017/02/15 全球购物
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
青奥会口号
2014/06/12 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
医学会议开幕词
2016/03/03 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL