pytorch-10 神经网络的损失函数

1. 回归:SSE和MSE

# MSE损失函数
import torch
from torch.nn import MSELossyhat = torch.randn(size=(50,), dtype=torch.float32)
y = torch.randn(size=(50,), dtype=torch.float32)criterion = MSELoss()
loss1 = criterion(yhat, y)# 计算mse 误差平方
criterion = MSELoss(reduction="mean")
loss2 = criterion(yhat, y)# 计算sse
criterion = MSELoss(reduction="sum")
loss3 = criterion(yhat, y)loss1, loss2, loss3

2. BCELoss二分类交叉熵损失函数

方法1:nn模块中的类

  • class BCEWithLogitsLoss
  • class BCELoss

方法2:functional库中的计算函数 (很少用到)

  • function F.binary_cross_entropy_with_logits
  • function F.binary_cross_entropy
# 二分类交叉熵损失函数 方法一、手动实现 BCELoss
import torchN = 3*pow(10,3)
torch.random.manual_seed(420)
X = torch.rand((N,4),dtype=torch.float32)
w = torch.rand((4,1),dtype=torch.float32,requires_grad=True)
y = torch.randint(low=0,high=2,size=(N,1),dtype=torch.float32)zhat = torch.mm(X,w)
sigma = torch.sigmoid(zhat)loss = -(1/N) * torch.sum( (1-y)*torch.log(1-sigma) + y*torch.log(sigma) )  # binary cross entropy loss
loss
# BCELoss 方法二、使用类
import torch
import torch.nn as nn# X, w, y
# zhat, sigma(sigmoid)criterion = nn.BCELoss()  # 不带sigmoid函数, 主要为了监控准确率
loss1 = criterion(sigma, y)criterion = nn.BCEWithLogitsLoss()  # 带有sigmoid函数
loss2 = criterion(zhat, y)loss1, loss2
# BCELoss 方法三、使用函数
import torch
from torch.nn import functional as F# X, w, y
# zhat, sigma(sigmoid)loss1 = F.binary_cross_entropy(sigma, y) # 没有sigmoid函数
loss2 = F.binary_cross_entropy_with_logits(zhat, y) # 有sigmoid函数loss1, loss2

3. CrossEntropyLoss 多分类交叉熵损失函数

方法1:调用logsoftmax和NLLLoss实现
方法2:直接调用CrossEntropyLoss

# 多分类交叉熵损失函数
import torch
import torch.nn as nnN = 3*pow(10,2)
torch.random.manual_seed(420)
X = torch.rand((N,4),dtype=torch.float32)
w = torch.rand((4,3),dtype=torch.float32,requires_grad=True)
y = torch.randint(low=0,high=2,size=(N,),dtype=torch.float32)
# 方法一、LogSoftmax 和 NLLLoss
zhat = torch.mm(X,w)
logsm = nn.LogSoftmax(dim=1)
logsigma = logsm(zhat)criterion = nn.NLLLoss() # 将标签转化成 独热编码,01的稀疏矩阵,类型是Long
loss1 = criterion(logsigma, y.long())
# 方法二、CrossEntropyLoss
criterion = nn.CrossEntropyLoss()  # 属性reduction的值,mean、sum、None
loss2 = criterion(zhat, y.long())criterion = nn.CrossEntropyLoss(reduction="mean")  # 属性reduction的值,mean、sum、none
loss_mean = criterion(zhat, y.long())criterion = nn.CrossEntropyLoss(reduction="sum")  # 属性reduction的值,mean、sum、none
loss_sum = criterion(zhat, y.long())criterion = nn.CrossEntropyLoss(reduction="none") # 没有聚合函数的聚合效果
loss_none = criterion(zhat, y.long())loss1, loss2, loss_mean, loss_sum, loss_none

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

投影与降维

摘要: 投影是将数据从原始的高维空间映射到一个低维空间的过程,通常这个低维空间的维度小于原始空间。降维是减少数据集中变量数量的技术,旨在提取数据的代表性特征,同时去除无关或冗余的信息。两者都旨在处理高维数据&#xff0c…

Python操作Redis(连接方式、通用操作、字符串操作、Hash操作、List操作)

Python操作Redis 目录 Python操作Redis普通连接连接池连接通用操作字符串操作Hash操作List操作 安装:pip install redis 普通连接 每次连接都会创建新的连接 import redisconn redis.Redis(host127.0.0.1,port6379,db0, # 数据库编号(Redis支持多数据库)passwor…

SQL进阶(六):通关题:制作一个活动日历

目录 通关题&#xff1a;用 SQL 制作一个活动日历任务 1&#xff1a; 制作一个日历Q1: 在 2023 年当中&#xff0c;星期 2 出现的次数和星期 5 出现的次数的关系是&#xff1f;&#xff08;选择 > 或 < 或 &#xff09;Q2: 在 2023 年每个月的5号&#xff0c;10号&#x…

当CV遇上transformer(三)Clip模型及源码分析

当CV遇上transformer(三)Clip模型及源码分析 2020年10月&#xff0c;Dosovitskiy首次将纯Transformer的网络结构应用于图像分类任务中(ViT)&#xff0c;并取得了当时最优的分类效果&#xff0c;其研究成果是Transformer完全替代标准卷积的首次尝试。随着谷歌提出ViT之后&#…

Python 全栈体系【四阶】(四十五)

第五章 深度学习 十、生成对抗网络&#xff08;GAN&#xff09; 1. 图像生成技术概述 1.1 什么是图像生成技术 图像生成技术是指利用机器学习或深度学习等人工智能技术&#xff0c;通过训练模型来生成逼真的图像。这些技术可以根据给定的输入&#xff0c;生成与真实图像相似…

反序列化漏洞【1】

1.不安全的反序列化漏洞介绍 序列化&#xff1a;将对象转换成字符串&#xff0c;目的是方便传输&#xff0c;关键词serialize a代表数组&#xff0c;数组里有三个元素&#xff0c;第一个元素下标为0&#xff0c;长度为7&#xff0c;内容为porsche&#xff1b;第二个元素下标为1…

GPT-4o API 全新版本发布:提升性能,增加性价比

5月13日&#xff0c;OpenAI 发布了全新ChatGPT模型 GPT-4o&#xff0c;它在响应速度和多媒体理解上都有显著提升。在这篇文章中&#xff0c;我们将介绍 GPT-4o 的主要特点及其 API 集成方式。 什么是 GPT-4o&#xff1f; GPT-4o 是 OpenAI 于5月13日发布的最新多模态 AI 模型…

【简单介绍下在Ubuntu中如何设置中文输入法】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

PgMP考试难度大吗?社会认可怎么样?

对于已经在职场摸爬滚打多年&#xff0c;或者对项目和项目集管理具有极高兴趣和追求的你来说&#xff0c;一定听说过PgMP&#xff08;项目集管理专业人士&#xff09;这个国际认证。那么PgMP很难考吗&#xff1f; 免费送备考资料。联系我们&#xff1a;18938656370 一、PgMP考…

国产化数据库_金仓_Linux版Docker版部署过程及简单使用

国产化数据库金仓Linux版部署过程 文档参考&#xff1a;https://help.kingbase.com.cn/v8/install-updata/install-linux/install-linux-3.html#id12 以下安装是在Centos7系统下进行 0.安装包准备 找到你的操作系统对应的平台所支持的软件包下载&#xff0c;我这里下载的是x…

react的多级路由定义

在写实验室项目的时候&#xff0c;有一个需求&#xff0c;在二级路由页面点击按钮&#xff0c;跳转到详情列表页面&#xff0c;同时三级路由不用在导航栏显示&#xff0c;效果图如下&#xff1a; 前期的尝试&#xff1a; 在route,js文件这样定义的&#xff1a; {path: music,…

mysql权限体系

提示&#xff1a;根据课程视频总结知识点------2024.05.15 文章目录 权限处理逻辑1、 能不能连接2、能不能执行操作 权限授予与回收1、创建用户2、授予权限3、查看权限4、回收权限5、 权限级别 账户安全管理1、用户权限设定原则2、历史文件泄密 用户权限设定原则1. 只读用户--数…

.net中的依赖注入框架Autofac

文章目录 前言1. 安装 Autofac2. 创建一个简单的控制台应用程序3. 创建组件和接口4. 多种注册方式4.1. 单例注册4.2. 生命周期范围注册4.3. 命名注册4.4. Lambda 表达式注册4.5. 泛型组件注册 5. 属性注入6. 使用多个ContainerBuilder合并注册7. 使用多个 ContainerBuilder 示例…

哈希表+DFS快速解决力扣129题:求根节点到叶节点数字之和

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

平均工资数据分析之回归

链接: R语言实战——中国职工平均工资的变化分析——相关与回归分析 1、模型诊断和评估的方法 1. 残差分析 1、残差图 (Residual Plot)&#xff1a;用于检查残差是否存在非随机模式。理想情况下&#xff0c;残差应随机分布在零附近。 2、Q-Q 图 (Quantile-Quantile Plot)&am…

【liunx】yumvim

目录 Linux 软件包管理器 yum 关于 rzsz 注意事项 查看软件包 Linux开发工具 Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 简单vim配置 配置文件的位置 sudo提权 Linux 软件包管理器 yum 1.yum是什么&#xff1…

Transformer(2)--位置编码器

文章目录 一、嵌入表示层二、流程详解1.初始化位置编码器2.计算位置编码3.扩维&#xff0c;与输入张量匹配4.添加位置编码到输入张量上 三、完整代码 一、嵌入表示层 对于输入文本序列&#xff0c;首先通过输入嵌入层&#xff08;Input Embedding&#xff09;将每个单词转换为其…

Oracle数据库查询各表空间的占用比例

目录 1、查询各表数据记录和数据大小 2、查询数据库已有表空间的大小 3、查询某表空间下各表占用突然间的大小 1、查询各表数据记录和数据大小 select a.table_name "表名",a.num_rows "数据记录",b.total "总大小&#xff08;MB)" from us…

【前端】CSS基础(4)

文章目录 前言1、CSS常用属性1.1 文本属性1.1.1 文本对齐1.1.2 文本装饰1.1.3 文本缩进1.1.5 行高 前言 这篇博客仅仅是对CSS的基本结构进行了一些说明&#xff0c;关于CSS的更多讲解以及HTML、Javascript部分的讲解可以关注一下下面的专栏&#xff0c;会持续更新的。 链接&…

golang http请求返回 io.ReadCloser 数据读取和编码转换为utf8 注意事项

在go语言中我们发送一个http请求后&#xff0c; 我们需要通过resp返回体中的Body对象&#xff08;是一个 io.ReadCloser对象&#xff09;来对请求返回的数据进行读取。 对于这类Reader的数据读取我们需要先定义一个byte切片, 然后通过循环来对reader中的数据进行读取&#xff…