损失函数 mse_二分类损失函数

损失函数 mse_二分类损失函数损失函数文章目录损失函数含义:标准:常用的两种损失函数均方误差损失函数(MSE)【MeanSquareErrorLoss】交叉熵损失函数(CS)【CrossEntropyLoss】均方误差损失函数计算公式含义解释代码实现适用范围交叉熵损失函数计算公式含义解释代码实现适用范围含义:用于衡量在训练集上模型的输出与真实输出的差异标准:损失函数越小,模型输出与真实输出越相似,模型效果越好常用的两种损失函数均方误差损失函数(MSE)【MeanSquareErrorLoss】交叉

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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

损失函数

含义:

用于衡量在训练集上模型的输出与真实输出的差异

标准:

损失函数越小,模型输出与真实输出越相似,模型效果越好

常用的两种损失函数

  1. 均方误差损失函数(MSE)【Mean Square Error Loss】

  2. 交叉熵损失函数(CS)【Cross Entropy Loss】

均方误差损失函数

计算公式

M S E = 1 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 MSE=\frac{1}{m}\sum^m_{i=1}(\hat y^{(i)}-y^{(i)})^2 MSE=m1i=1m(y^(i)y(i))2

含义解释

符号 含义
m 样本数量
y ^ ( i ) \hat y^{(i)} y^(i) 第i个样本的模型预测输出的结果
y ( i ) y^{(i)} y(i) 第i个样本的真实输出的结果

代码实现

''' MSE Loss '''
import torch 
import torch.nn as nn

torch.manual_seed(1)

# create data
x = torch.linspace(0,10,10).reshape(2,5)
w = torch.randn((5,2))
bias = torch.randn((2,1))*0.1
y = x@w
y_ = y+bias
print(y) 
print(y_)

# calulate the MSE loss between y and y_
MESLoss = torch.tensor([(y1-y2)**2 for y1,y2 in zip(y_.flatten(),y.flatten())]).mean()
print(MESLoss)

# MSELoss func
MSELoss_func = nn.MSELoss()
print(MSELoss_func(y_,y))

在这里插入图片描述

适用范围

  • 回归问题,如线性回归

  • 使用均方误差处理分类问题,公式
    M S E c l a s s i f i c a t i o n = 1 m ∑ i = 1 m ∑ j = 1 c ( y ^ j ( i ) − y j ( i ) ) 2 MSE_{classification}=\frac{1}{m}\sum^m_{i=1}\sum^c_{j=1}(\hat y^{(i)}_{j}-y^{(i)}_{j})^2 MSEclassification=m1i=1mj=1c(y^j(i)yj(i))2

    符号 含义
    m 样本数量
    y ^ j ( i ) \hat y^{(i)}_{j} y^j(i) 第i个样本的第j类上的模型预测输出的结果
    y j ( i ) y^{(i)}_{j} yj(i) 第i个样本的第j类上的真实输出的结果

交叉熵损失函数

计算公式

C E = − 1 m ∑ i = 1 m ∑ j = 1 c y j ( i ) l o g ( y ^ j ( i ) ) CE=-\frac{1}{m}\sum^m_{i=1}\sum^c_{j=1}y^{(i)}_{j}log(\hat y^{(i)}_{j}) CE=m1i=1mj=1cyj(i)log(y^j(i))

含义解释

符号 含义
m 样本数量
y ^ j ( i ) \hat y^{(i)}_{j} y^j(i) 模型对第i个样本属于第j类上的预测结果
y j ( i ) y^{(i)}_{j} yj(i) 第i个样本的第j类上的真实输出的结果,正确类别输出为1,其他输出0

交叉熵损失取决于模型对正确类别预测概率的对数值。

代码实现

''' CE Loss '''
import torch

def CrossEntropyLoss(input, target):
    res = -input.gather(dim=1, index=target.view(-1, 1))
    print(res.shape)
    res += torch.log(torch.exp(input).sum(dim=1).view(-1, 1))
    print(res.shape)
    res = res.mean()
    print(res.shape)
    return res

input = torch.tensor([
    [1, 2, 3],
    [4, 5, 6]
], dtype=torch.float32)

target = torch.tensor(
    [0, 1],
)

print(torch.nn.CrossEntropyLoss()(input, target))
print(CrossEntropyLoss(input, target))

损失函数 mse_二分类损失函数

适用范围

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192846.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm2021最新激活码 3月最新注册码

    pycharm2021最新激活码 3月最新注册码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • C语言中位运算异或“∧”的作用「建议收藏」

    C语言中位运算异或“∧”的作用「建议收藏」1.概念异或运算符”∧”也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1^0=1,1∧1=0。运算说明0^0=0,0^1=10异或任何数,其结果=任何数1^0=1,1^1=01异或任何数,其结果=任何数取反x^x=0任何数异或自己,等于把自己置02.应用(1)使特定位翻转 比如

  • I2C电平转换电路_双向电平转换电路工作原理

    I2C电平转换电路_双向电平转换电路工作原理本文分享下I2C双向电平转换电路的设计原理,以及需要注意的事项。在I2C主从设备对接时,需要考虑主从设备的电平情况,常规的主要有3种:5V,3.3V,1.8V。如果电平相同,比如都是3.3V,那么可以直接对接。如果电平不同,一个高电平是3.3V,另外一个是1.8V,那么就需要接入其它的器件来做一下电平转换,通常是接入NMOS管。如上图,此图来源于I2C官方协议,协议标准文件里…

  • 超简单部署使用Maven私库 Nexus

    超简单部署使用Maven私库 Nexusdocker拉取:dockerpulldocker.io/sonatype/nexus3运行容器:dockerrun-d-p8085:8081–namenexusdocker.io/sonatype/nexus,映射到本地的8085端口,等一会儿就好了,用dockerps-a命令查看访问地址:http://192.64.23.111:8085/)…

  • android线程通信的几种方式_java多线程的实现方式

    android线程通信的几种方式_java多线程的实现方式1,通过Handler机制.privatevoidone(){handler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){super.handleMessage(msg);

  • 对象转json字符串字段丢失_excel某个对象程序库丢失

    对象转json字符串字段丢失_excel某个对象程序库丢失 在fastjson下将对象转json时会丢失部分属性的情况,出现这种情况的问题原因是由于属性命名不符合规范导致,比如:uId,一个字母后面紧跟着一个大写字母,导致反射get/set方法时会出现连续两个大写字母(getUId/setUId)。解决该问题的方法时在属性上加上注解:@JSONField(name="uId"),就可以解决该问题。或者是属性名serviceDeadline在get/…

发表回复

您的电子邮箱地址不会被公开。

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