pytorch交叉熵损失函数计算_pytorch loss不下降

pytorch交叉熵损失函数计算_pytorch loss不下降MSE:MeanSquaredError(均方误差)含义:均方误差,是预测值与真实值之差的平方和的平均值,即:MSE=1N∑i=1n(xi−yi)2\begin{aligned}MSE=\cfrac{1}{N}\sum_{i=1}^n(x_i-y_i)^2\end{aligned}MSE=N1​i=1∑n​(xi​−yi​)2​  但是,在具体的应用中跟定义稍有不同。主要差别是参数的设置,在torch.nn.MSELoss中有一个reduction参数。reduction是维度要不要


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

MSE: Mean Squared Error(均方误差)
含义:均方误差,是预测值与真实值之差的平方和的平均值,即:
M S E = 1 N ∑ i = 1 n ( x i − y i ) 2 \begin{aligned} MSE =\cfrac {1}{N}\sum_{i=1}^n(x_i-y_i)^2 \end{aligned} MSE=N1​i=1∑n​(xi​−yi​)2​
  但是,在具体的应用中跟定义稍有不同。主要差别是参数的设置,在torch.nn.MSELoss中有一个reduction参数。reduction是维度要不要缩减以及如何缩减主要有三个选项:

  • ‘none’:no reduction will be applied.
  • ‘mean’: the sum of the output will be divided by the number of elements in the output.
  • ‘sum’: the output will be summed.

  如果不设置reduction参数,默认是’mean’。
下面看个例子:

import torch
import torch.nn as nn
 
a = torch.tensor([[1, 2], 
				  [3, 4]], dtype=torch.float)
				  
b = torch.tensor([[3, 5], 
				  [8, 6]], dtype=torch.float)
 
loss_fn1 = torch.nn.MSELoss(reduction='none')
loss1 = loss_fn1(a.float(), b.float())
print(loss1)   # 输出结果:tensor([[ 4., 9.],
               # [25., 4.]])
 
loss_fn2 = torch.nn.MSELoss(reduction='sum')
loss2 = loss_fn2(a.float(), b.float())
print(loss2)   # 输出结果:tensor(42.)
 
 
loss_fn3 = torch.nn.MSELoss(reduction='mean')
loss3 = loss_fn3(a.float(), b.float())
print(loss3)   # 输出结果:tensor(10.5000)

  在loss1中是按照原始维度输出,即对应位置的元素相减然后求平方;loss2中是对应位置求和;loss3中是对应位置求和后取平均。
  除此之外,torch.nn.MSELoss还有一个妙用,求矩阵的F范数(F范数详解)当然对于所求出来的结果还需要开方。

参考文献

[1]pytorch的nn.MSELoss损失函数
[2]状态估计的基本概念(3)最小均方估计和最小均方误差估计

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192133.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 二叉树前序遍历 迭代_二叉树的前序中序后序遍历算法

    二叉树前序遍历 迭代_二叉树的前序中序后序遍历算法二叉树的前序遍历对于一颗二叉树,当遍历它的时候使用递归总是轻而易举的。这是二叉树前序遍历-使用递归publicvoidpreorderTraversal(TreeNoderoot){if(root==null)return;System.out.print(root.data+””);preorde…

    2022年9月10日
  • WDM 驱动程序开发[通俗易懂]

    WDM 驱动程序开发[通俗易懂]1.概述 引入了全新的WDM(Win32DriverModel)的驱动程序架构,说是新技术,其实早在1997年Microsoft就提出了该项技术并在Windows98中得到了充分的应用,换句话说,Windows98也支持WDM。这样WDM就成为了一个跨平台的驱动程序模型不仅如此WDM驱动程序还可以在不修改源代码的情况下经过重新编译后在非Intel平台上运行。2.WDM设备驱动程序的特

    2022年10月21日
  • select into from 和 insert into select 的用法和区别

    select into from 和 insert into select 的用法和区别selectintofrom和insertintoselect都是用来复制表,两者的主要区别为:selectintofrom要求目标表不存在,因为在插入时会自动创建。insertintoselectfrom要求目标表存在 下面分别介绍两者语法 一、INSERTINTOSELECT语句 1、语句形式为:InsertintoTable2(field1…

    2022年7月15日
  • textCNN初探

    textCNN初探文章目录目录1.什么是textCNN1.1textCNN提出的背景1.2textCNN合理性分析2.textCNN相比于传统图像领域的CNN有什么特点?3.textCNN例子讲解3.1参数和超参数3.2textCNN的数据3.3textCNN的网络结构定义3.4代码目录1.什么是textCNN1.1textCNN提出的背景我们知道,CNN在图像领域应用的比较好了,那么C…

    2022年6月28日
  • 为什么要进行数据库分区

    为什么要进行数据库分区此文从以下几个方面来整理关于分区表的概念及操作:        1.表空间及分区表的概念        2.表分区的具体作用        3.表分区的优缺点        4.表分区的几种类型及操作方法        5.对表分区的维护性操作. (1.)表空间及分区表的概念 表空间:   是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是…

    2022年5月6日
  • 深度相机 结构光_结构光三维成像原理

    深度相机 结构光_结构光三维成像原理版权声明:本文为博主原创文章,未经博主允许不得转载。违者必究。 https://blog.csdn.net/electech6/article/details/78707839 </div> <linkrel="styles…

    2022年10月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号