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

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


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=m1​i=1∑m​(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​=m1​i=1∑m​j=1∑c​(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=−m1​i=1∑m​j=1∑c​yj(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_二分类损失函数

适用范围

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

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

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


相关推荐

  • IDEA 将项目打包war包[通俗易懂]

    IDEA 将项目打包war包[通俗易懂]IntelliJIDEA将项目打包war包1、准备工作IntelliJIDEA开发工具可以正常运行的Java项目2、打包war包流程使用快捷键Ctrl+Alt+Shift+s或者鼠标点击选中项目名按F4打开ProjectStructure界面选择Artifacts,点击右边+,依次选择WebApplication:Archive和For’myP…

    2022年11月2日
  • EasyUI学习笔记

    EasyUI学习笔记

    2021年7月11日
  • 常见的图像增强方法有_图像中值滤波的算法实现

    常见的图像增强方法有_图像中值滤波的算法实现1.对比度拉升采用了线性函数对图像的灰度值进行变换2.Gamma校正采用了非线性函数(指数函数)对图像的灰度值进行变换这两种方式的实质是对感兴趣的图像区域进行展宽,对不感兴趣的背景区域进行

    2022年8月3日
  • Landsat8 OLI数据不同波段组合作用

    Landsat8 OLI数据不同波段组合作用OLI波段合成 R、G、B 主要用途 4、3、2 自然真彩色 7、6、4 城市 5、4、3 标准假彩色图像、植被 6、5、2 农业 7、6、5 穿透大气层 5、6、2 健康植被 5、6、4

    2022年7月23日
  • c语言时间戳转换日期格式_c语言时间转换为时间戳

    c语言时间戳转换日期格式_c语言时间转换为时间戳时间戳是计算机中记录时间的一种方法,某一时刻的时间戳指的是从1970年1月1日0时0分0秒开始到该时刻总共过了多少秒。请编程任意输入一个整数,然后计算出它表示的是哪一天哪一刻。问题分析输入:任意整数n(0≤n≤2147483647),表示从1970年1月1日0时0分0秒到该时刻过了多少秒。输出:y年m月d日H时M分S秒,y、m…

    2022年9月28日
  • C#点餐系统_点餐系统数据库设计

    C#点餐系统_点餐系统数据库设计一.编程思想1.首先考虑需要什么样的界面;2.界面中需要用到的控件,以及控件的简单设置;3.在不需要按钮控件的情况下,点击会生成按钮的实现;4.通过点击后生成的菜品统计以及价格的自动计算;二.编程核心1.获取控件中的内容;2.添加按钮点击事件;3.对控件中的内容封装传递后并在下一步取出;4.label控件和button控件的生成;5.主要用到了foreach进行遍历;三.实现……

    2022年9月7日

发表回复

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

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