P16 激活函数与Loss 的梯度
参考:
https://www.ngui.cc/el/507608.html?action=onClick
这里面简单回顾一下PyTorch 里面的两个常用的梯度自动计算的API
autoGrad 和 Backward, 最后结合 softmax 简单介绍一下一下应用场景。
目录:
1 autoGrad
2 Backward
3 softmax
一 autoGrad
输入
x
输出

损失函数

参数更新

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 13 21:28:26 2023@author: cxf
"""import torch
import torch.nn.functional as Fdef grad():x = torch.tensor([[1.0,2.0]]).view(2,1)w = torch.full([2,1], 1.0,requires_grad= True)target = torch.ones((1,1))out = torch.matmul(w.T, x)print(out)mse = F.mse_loss(out, target)print("\n mse",mse)grad_w = torch.autograd.grad(mse,[w]) print(grad_w)if __name__ == "__main__":grad()


二 Backward
求梯度另一种方法,可以通过backward
在创建动态图后,直接调用backward,更加方便
import torch
import torch.nn.functional as Fdef grad():x = torch.tensor([[1.0,2.0]]).view(2,1)w = torch.full([2,1], 1.0,requires_grad= True)target = torch.ones((1,1))out = torch.matmul(w.T, x)print(out)mse = F.mse_loss(out, target)print("\n mse",mse)mse.backward() print(w.grad)if __name__ == "__main__":grad()
三 softmax
多分类模型常用的激活函数


这种模型通常用交叉熵做损失函数


因为标签中只有一个为1,其它都为0,假设为



则:
(j=i)
(
)
则写成向量形式为

import torch
import torch.nn.functional as F
from torch import nn#自己实现该梯度计算
def calcGrad(a,target):grad =a -targetprint("\n 直接计算",grad)# 直接计算 tensor([[ 0.0900, -0.7553, 0.6652]], grad_fn=<SubBackward0>)#调用API 方式实现
def grad():CEL = nn.CrossEntropyLoss()z = torch.tensor([[1.0,2.0,3.0]],requires_grad=True)a = F.softmax(z,dim=1)print("\n 神经元输出",a)target = torch.tensor([[0.0,1.0,0.0]])loss =CEL(z,target)loss.backward()print("\n API 计算",z.grad)# API 计算 tensor([[ 0.0900, -0.7553, 0.6652]])calcGrad(a,target)if __name__ == "__main__":grad()这里面要注意nn.CrossEntropyLoss
是相当于对z 先做softmax,得到a, 然后再做交叉熵
相关文章:
P16 激活函数与Loss 的梯度
参考:https://www.ngui.cc/el/507608.html?actiononClick这里面简单回顾一下PyTorch 里面的两个常用的梯度自动计算的APIautoGrad 和 Backward, 最后结合 softmax 简单介绍一下一下应用场景。目录:1 autoGrad2 Backward3 softmax一 autoGrad输入 x输出损…...
ThinkPHP5美食商城系统
有需要请私信或看评论链接哦 可远程调试 ThinkPHP5美食商城系统一 介绍 此美食商城系统基于ThinkPHP5框架开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。用户注册登录后可购买美食,个人中心,评论和反馈等ÿ…...
Vue3 - $refs 使用教程,父组件调用获取子组件数据和方法(setup() / <script setup>)
前言 在 Vue2 中父组件使用 $refs 调用子组件数据和方法非常简单,但在 Vue3 中这种方法行不通了。 本文实现了 Vue3 中父组件使用 $refs 获取调用子组件数据和方法教程, 并且提供了 setup() 与 <script setup> 两种 “开发模式” 的示例代码,请根据需要进行选择。 网…...
华为OD机试 - 众数和中位数(Python)| 真题+思路+考点+代码+岗位
众数和中位数 题目 众数是指一组数据中出现次数多的数 众数可以是多个中位数是指把一组数据从小到大排列,最中间的那个数, 如果这组数据的个数是奇数,那最中间那个就是中位数 如果这组数据的个数为偶数,那就把中间的两个数之和除以 2 就是中位数查找整型数组中元素的众数并…...
一眼万年的 Keychron 无线机械键盘
一眼万年的 Keychron 无线机械键盘 一款好的键盘对于程序员或者喜欢码字的人来说是非常重要的,而最近博主入手了自己的第一款机械键盘——Keychron 无线机械键盘。 机械键盘特点 有独立轴体,通过两个簧接触,来触发信号,价格相对贵…...
自动化测试高频面试题(含答案)
Hello,你们的好朋友来了!今天猜猜我给大家带来点啥干货呢?最近很多小伙伴出去面试的时候经常会被问到跟自动化测试相关的面试题。所以,今天特意给大家整理了一些经常被公司问到的自动化测试相关的面试题。停,咱先收藏起…...
3、按键扫描检测处理
说明:本文处理按键的短按、长按检测执行,非矩阵按键 硬件可以类似如下连接即可,无需放置上下拉电阻; 按键动作分长按、短按(弹起时执行)两种 按下不放执行长按,但松开按键时不予执行短按函数 多个按键可以同时操作 按…...
集中式存储和分布式存储
分布式存储是相对于集中式存储来说的,在介绍分布式存储之前,我们先看看什么是集中式存储。不久之前,企业级的存储设备都是集中式存储。所谓集中式存储,从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系…...
【机器学习数据集】如何获得机器学习的练习数据?
一、scikit-learn自带数据集Scikit-learn内置了很多可以用于机器学习的数据,可以用两行代码就可以使用这些数据。自带的小的数据集为:sklearn.datasets.load_<name>load_bostonBoston房屋价格回归506*13fetch_california_housing加州住房回归20640…...
【编程实践】使用 Kotlin HTTP 框架 Fuel 实现 GET,POST 接口 kittinunf.fuel【极简教程】
目录 Fuel 简介 实现代码 GET网络请求用法(有三种写法...
大数据DataX(一):DataX的框架设计和插件体系
文章目录 DataX的框架设计和插件体系 一、DataX是什么...
软考高级信息系统项目管理师系列之十一:项目进度管理
软考高级信息系统项目管理师系列之十一:项目进度管理 一、进度管理领域输入、输出、工具和技术表二、项目进度管理1.项目进度管理过程2.项目进度管理三、项目进度管理过程1.项目进度管理2.工作包和活动3.活动清单4.活动属性5.项目进度网络图6.资源日历7.活动资源需求8.资源分解…...
vue2版本《后台管理模式》(下)
文章目录前言一、home 页以下都属于home子组件二、header 头部 组件二、Menu 页面三、Bread 面包屑四、Footer五 、分页器: Pageing六、权限管理总结前言 这章…...
软考中级-程序设计语言
(1)解释器解释源程序时不生成独立的目标代码,源程序和解释程序都参与到程序执行中。(2)编译器编译时生成独立的目标代码,运行时是运行与源程序等价的目标程序,源程序不参与执行。阶段补充&#…...
Sphinx : 高性能SQL全文检索引擎
Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。 Sphinx的特点 快速创建索引:3分…...
ansible实战应用系列教程6:管理ansible变量
ansbile实战应用系列教程6:管理ansible变量 Ansible VariablesNaming VariablesDefining Variables在playbook中定义变量Defining Variables in Playbooks在playbooks中使用VariablesHost Variables and Group Variables使用group_vars和host_vars目录命令行定义全局变量Varia…...
java8新特性Stream流中anyMatch和allMatch和noneMatch的区别详解
1、anyMatch 判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。 接口定义: boolean anyMatch(Predicate<? super T> predicate); 方法描述: 在anyMatch 接口定义中是接收 Pr…...
双网卡(有线和wifi)同时连接内网和外网
双网卡(有线和wifi)同时连接内网和外网 Win10技巧:如何修改有线/WiFi网络优先级:https://www.ithome.com/html/win10/253612.htm双网卡实现两个网络的自由访问:https://blog.51cto.com/ghostlan/1299090Linux服务器安…...
如何赋能智能运维,迈出数字化黑匣子第一步?
在当下大数据时代,诸多行业专家为企业智能运维绘出美好蓝图。在该蓝图中,互联网、云计算、大数据分析联合发力,企业在能“攻”能“守”中快速、可持续发展。何为“攻”?对支撑企业产品研发、生产、管理、营销等各业务链条的IT基础…...
消息称索尼计划为PS5推出两款蓝牙耳机,Find My蓝牙耳机用途广
根据国外科技媒体 Insider Gaming 报道,索尼计划进一步丰富 PlayStation 5 的配件生态,将会推出两款耳机,一款采用类似于 AirPods 的 TWS 设计,另一款则是无线头戴式耳机。 消息称 TWS 耳机的内部代号为“Project Nomad”&#…...
基于储能系统参与电网一次调频的下垂控制仿真示例
目录 手把手教你学Simulink——基于储能系统参与电网一次调频的下垂控制仿真示例 一、 引言:当“新能源浪潮”遇见“频率崩塌”——储能如何化身电网的“速效救心丸”? 二、 问题本质:一次调频的“核心挑战”与“协同逻辑” 1. 核心挑战 …...
RPGMZ 万能通用钩子代码 插入自己的代码逻辑
const prevUpdate SceneManager._scene.update; SceneManager._scene.update function() {prevUpdate.call(this); // 保留原版// 你的任意代码SceneManager._scene.update prevUpdate; // 用完归还 };例子1 消息框对话 如何插入自己的对话内容const prevUpdate SceneMan…...
终极Notero使用指南:如何快速实现Zotero与Notion文献同步
终极Notero使用指南:如何快速实现Zotero与Notion文献同步 【免费下载链接】notero A Zotero plugin for syncing items and notes into Notion 项目地址: https://gitcode.com/gh_mirrors/no/notero 在学术研究和工作流管理中,我们常常面临一个共…...
如何永久保存微信聊天记录?WeChatMsg开源工具让你的数字记忆永不丢失
如何永久保存微信聊天记录?WeChatMsg开源工具让你的数字记忆永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...
N_m3u8DL-RE终极实战指南:三步破解流媒体下载技术难题
N_m3u8DL-RE终极实战指南:三步破解流媒体下载技术难题 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …...
跟着 MDN 学 HTML day_35:(深入解析 CharacterData 抽象接口)
在 DOM 的庞大体系中,并非所有节点都以可见的标签形式存在。当我们操作一段文本、一条注释甚至一条处理指令时,背后都有一个共同的基类在默默提供支持。这个基类就是 CharacterData。它是一个抽象接口,意味着你不会在代码中直接创建 Characte…...
别再死记硬背公式了!用MATLAB/Simulink手把手复现PMSM滑模观测器(SMO)设计全流程
从零构建PMSM滑模观测器:MATLAB/Simulink实战指南 在电机控制领域,滑模观测器(SMO)因其强鲁棒性和抗干扰能力,成为无速度传感器控制的热门选择。但传统教材往往陷入数学推导的泥潭,让初学者望而生畏。本文将…...
G-Helper终极教程:免费轻量级华硕笔记本控制软件,彻底告别Armoury Crate臃肿体验
G-Helper终极教程:免费轻量级华硕笔记本控制软件,彻底告别Armoury Crate臃肿体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix,…...
视频赋能实景 厘米级构筑孪生底座 ——纯视频三维反演技术,重塑数字孪生与视频孪生底层技术架构
视频赋能实景 厘米级构筑孪生底座——纯视频三维反演技术,重塑数字孪生与视频孪生底层技术架构前言数字孪生与视频孪生产业历经多轮迭代,始终未能突破底层技术依赖硬件、实景还原精度不足、虚实融合浅层化、底座搭建成本高昂的核心桎梏。传统方案依托激光…...
从阶跃到ReLU:用Python和Matplotlib手把手画一遍,彻底搞懂激活函数怎么选
从阶跃到ReLU:用Python和Matplotlib手把手画一遍,彻底搞懂激活函数怎么选 神经网络中的激活函数就像交通信号灯,决定信息是否能够继续向前传递。对于初学者来说,面对各种数学公式往往感到抽象难懂。本文将通过Python代码和可视化图…...
