基于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 相关文章推荐
简介Django中内置的一些中间件
Jul 24 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
简单了解python模块概念
Jan 11 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
python3 求约数的实例
Dec 05 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
python实现字符串和数字拼接
Mar 02 Python
Python通过文本和图片生成词云图
May 21 Python
python为什么会环境变量设置不成功
Jun 23 Python
pytorch显存一直变大的解决方案
Apr 08 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 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
Protoss热键控制
2020/03/14 星际争霸
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
微信小程序日期选择器实例代码
2018/07/18 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
python使用scrapy解析js示例
2014/01/23 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
python 写一个水果忍者游戏
2021/01/13 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
巴西购物网站:Onofre Agora
2020/06/08 全球购物
优秀导游先进事迹材料
2014/01/25 职场文书
标准单位租车协议书
2014/09/23 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
SQLServer之常用函数总结详解
2021/08/30 SQL Server