PyTorch官网demo解读——第一个神经网络(3)

上一篇:PyTorch官网demo解读——第一个神经网络(2)-CSDN博客

上一篇文章我们讲解了第一个神经网络的模型,这一篇我们来聊聊梯度下降。

大佬说梯度下降是深度学习的灵魂;梯度是损失函数(代价函数)的导数,而下降的目的是让我们的损失不断减少,达到模型收敛的效果,最终拟合出最优的参数w。

所以,我们要先从损失函数(代价函数)说起。

  • 损失函数

从上一篇我们知道这个神经网络的模型是:y = wx + b

对于单一个样本(x, y),它的损失值就是:loss = wx + b - y

为了简单好理解,我们先把b去掉,那么 loss = wx - y,这个误差值可能是负数,而我们衡量一个误差值使用负数好像有点奇怪,于是我们使用均方差,那么单个样本的损失就变成这样:

loss = (wx - y) ^2

假定我们有n个样本【(x1, y1), (x2, y2) …… (xn, yn)】,那么我们的损失函数就是:

这个损失函数实际上是一个开口向上的抛物线,我随机取了5个样本值,手搓了一下,画出来如下图:

  • 梯度下降

梯度实际上就是损失函数的导数,即抛物线上某个点的变化率

所以梯度函数是:

t = 2aw + b

下降就是每次迭代,将当前的权重减去 梯度值乘以学习率,即:

w = w - t * lr

其中 lr 表示学习率,学习率可以理解为我们每次迈的步伐大小,如果迈的步伐太大,会导致在逼近最优参数时难以收敛,步伐太大跨过去了,在最优参数左右摇摆。所以通常学习率会设置比较小的值。

  • 代码

上面我们万般无奈地使用了一堆数学公式...,但有时候数学是最好的抽象方式,就像程序员喜欢说 read the f**king source code 一样。语言是对事物的抽象,而数学是对语言的进一步抽象吧,语言无法表达某些自然的规律,所以需要通过数学来表达,哈哈!

好啦,回顾第一篇的demo代码,关于损失函数,pytorch demo的代码极为精简:

# 丢失函数 loss function
def nll(input, target):return -input[range(target.shape[0]), target].mean()
loss_func = nll

而梯度下降就更为精简了,梯度是自动推导的,只需设置一个标志:

weights.requires_grad_()

没错,只需上面这行代码,在每次训练迭代后调用 loss.backward(),梯度就被计算出来啦,而我们只需在每次迭代中减去梯度值就好,如下:

pred = model(xb) # 通过模型预测
loss = loss_func(pred, yb) # 通过与实际结果比对,计算丢失值loss.backward() # 反向传播
with torch.no_grad():weights -= weights.grad * lr  # 调整权重值bias -= bias.grad * lr  # 调整偏差值weights.grad.zero_()bias.grad.zero_()

weights.grad.zero_()的作用是将每次迭代的梯度清零,不然下次计算梯度的时候会进行叠加。

关于梯度下降,就聊到这里吧!有问题可以留言探讨,共同学习!

未有知而不行者,知而不行,只是未知!

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

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

相关文章

云渲染UE4像素流送搭建(winows、ubuntu)

windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行,用户可以通过浏览器操作虚幻引擎应用程序,客户端无需下载虚幻引擎,本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.广义正态分布算法4.实验参数设定…

【序列化和反序列化】

🍁什么是序列化和反序列化? 🍁典型解析🍁拓展知识仓🍁如何进行序列化和反序列化🍁未实现Serializable,可以序列化吗? 🍁典型解析 在Java中,我们可以通过多种方式来创建对…

我的NPI项目之Android电源系列(四) -- 关于剩余充满时间的问题的代码跟踪-max1720x_battery.c qpnp-smb2.c

从我的NPI项目之Android电源系列(三), 能够看出,healthd是通过读取/sys/class/power_supply/battery/time_to_full_now而进行充满剩余时间的。 在/sys/class/power_supply/battery/...目录下有很多文件,具体内容如下: /sys/class…

详谈 springboot整合shiro

背景: 本章将进一步的落地实践学习,在springboot中如何去整合shrio,整个过程步骤有个清晰的了解。 利用Shiro进行登录认证主要步骤: 1. 添加依赖:首先,在pom.xml文件中添加Spring Boot和Shiro的相关依赖…

java接口限流详解

目录 1.简介1.1.为什么需要限流?1.2.限流和熔断有什么区别?1.3.限流和削峰有什么区别?1.4 缓存,降级,限流简介 2.应用级限流2.1 控制并发数量2.2 控制访问速率2.2.1 令牌桶算法2.2.2 漏桶算法 3.分布式限流4.交流群 1.简介 接口…

漏洞复现-红帆OA iorepsavexml.aspx文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

浅谈师范双非普本工科专业的秋招历程

本人普通师范院校通信工程专业,于秋招历程之中四处碰壁,迫于家庭等各种因素考虑,最终选择移动的偏远县城岗位的OFFER!本人秋招历程之中,屡屡碰壁,也算得上“收获满满”!我简单给各位浅谈一下我的…

气动冷凝水回收泵机械浮球泵的特点工作原理介绍 不需要电源

​ 1:气动凝水回收泵机械式介绍 气动冷凝水回收泵是一种设计用于不使用电力来泵送冷凝液、油和其他高温液体等的设备。它无需维护,能将大量凝结水和其它液体从低位、低压或真空场所泵送到高处及高压区域。与传统电泵相比,气动冷凝水回收泵可…

放大电路的静态分析和动态分析例题

(一) (二) (三) (四) (五)

Spring Boot学习随笔- 第一个Thymeleaf应用(基础语法th:,request、session作用域取值)

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十五章、Thymeleaf Thymeleaf是一种现代化的服务器端Java模板引擎,专门用于Web和独立环境。Thymeleaf在有网络和无网络的环境下皆可运行,即可以让美工在浏览器查看页面的静态效果&am…

智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.向量加权平均算法4.实验参数设定…

《C++避坑神器·二十五》简单搞懂json文件的读写之遍历json文件读写

json.hpp库放在文章末尾 1、遍历json文件读写 (1)插入新键值对到json之情形1 原来json文件如下所示: {"Connection": {"IpAddress": "192.168.20.1","Rock": 0,"Solt": 1}, "Data…

opencv入门到精通——形态学转换

目录 目标 理论 1. 侵蚀 2. 扩张 3. 开运算 4. 闭运算 5. 形态学梯度 6. 顶帽 7. 黑帽 结构元素 目标 在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等。我们将看到不同的功能&…

前端---html 的介绍

1. 网页效果图 --CSDN 2. html的定义 HTML 的全称为&#xff1a;HyperText Mark-up Language, 指的是超文本标记语言。 标记&#xff1a;就是标签, <标签名称> </标签名称>, 比如: <html></html>、<h1></h1> 等&#xff0c;标签大多数都是…

【数据结构】查找与排序

要查询信息&#xff0c;涉及两个问题&#xff1a; 在哪里查&#xff1f;——查找表 怎么查&#xff1f;——查找方法 一.查找 1.查找表的定义&#xff1a; 查找表是由同类型的数据元素构成的集合 2.对查找表的基本操作&#xff1a; 1&#xff09;查询某个数据元素是否在查…

MY FILE SERVER: 1

下载地址 https://download.vulnhub.com/myfileserver/My_file_server_1.ova 首先我们需要发现ip 我的kali是59.162所以167就是靶机的 然后我们拿nmap扫一下端口 nmap -sV -p- 192.168.59.167 扫完发现有七个端口开放 按照习惯先看80 没看到有啥有用信息,用nikto扫一下 nik…

20231225使用荣耀HONOR70的手机通过BLE调试助手接收BLE广播

20231225使用荣耀HONOR70的手机通过BLE调试助手接收BLE广播 2023/12/25 16:33 结论&#xff1a;我买的 荣耀HONOR70的手机&#xff08;CPU型号&#xff1a;骁龙778G&#xff09; 的蓝牙BLE的连接速度明显弱于 Redmi Note12Pro 5G&#xff08;CPU型号&#xff1a;天玑1080&#…

【网安 | 网络协议】ARP协议(地址解析协议)

前言 在使用nmap时可以使用-PR指令&#xff0c;通过发送ARP请求包进行主机存活探测。 那么这一过程的原理是什么呢&#xff1f; 在了解什么是ARP协议后&#xff0c;问题就迎刃而解了。 概念 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xf…

基于Hexo+GitHub Pages 的个人博客搭建

基于HexoGitHub Pages 的个人博客搭建 步骤一&#xff1a;安装 Node.js 和 Git步骤二&#xff1a;创建Github Pages 仓库步骤二&#xff1a;安装 Hexo步骤三&#xff1a;创建 Hexo 项目步骤四&#xff1a;配置 Hexo步骤五&#xff1a;创建新文章步骤六&#xff1a;生成静态文件…