基于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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
Python正则捕获操作示例
Aug 19 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Python字典遍历操作实例小结
Mar 05 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
python中round函数如何使用
Jun 19 Python
详解python中的闭包
Sep 07 Python
基于python获取本地时间并转换时间戳和日期格式
Oct 27 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安装问题
2006/10/09 PHP
使用字符串函数输出整数化的PHP版本号
2006/10/09 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
php实现的顺序线性表示例
2019/05/04 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
详解如何利用Cython为Python代码加速
2018/01/27 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Python远程方法调用实现过程解析
2020/07/28 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
法国体育用品商店:GO Sport
2019/10/23 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
机械制造专业毕业生求职信
2014/03/02 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
小学生环保倡议书
2014/05/15 职场文书
求职信模板
2014/05/23 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
个人债务授权委托书
2014/10/17 职场文书
自荐信怎么写
2015/03/04 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
全网非常详细的pytest配置文件
2022/07/15 Python