基于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连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
列举Python中吸引人的一些特性
Apr 09 Python
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
利用Python实现简单的相似图片搜索的教程
Apr 23 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
详解Python3 pandas.merge用法
Sep 05 Python
python在地图上画比例的实例详解
Nov 13 Python
python实现不同数据库间数据同步功能
Feb 25 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 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冒泡排序算法的深入理解
2013/06/09 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
代码生成器 document.write()
2007/04/15 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
法律七进实施方案
2014/03/15 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
思想政治表现评语
2015/01/04 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python