PyTorch深度学习——梯度下降算法、随机梯度下降算法及实例(B站刘二大人P3学习笔记)

pytorch学习笔记(三十三):梯度下降和随机梯度下降 文章目录前言1. 一维梯度下降2. 学习率3. 多维梯度下降4. 随机梯度下降小结 前言 在本节中,我们将介绍梯度下降(gradient descent)的工作原理。虽然梯度下降在深度学习中很少被直接使用,但理解梯度的意义以及沿着梯度反方向更新自变量可能降低目标函数值的原因是学习后续优化算法的基础。随后,我们将引出随机梯度下降(stochastic gradient descent)。 1. 一维梯度下降 我们先以简单的一维梯度下降为例,解释梯度下降算法可能降低目标函数值的原因。假设连续可导的函数f:R→R 阅读详情

 梯度下降算法

       以模型 y=x*w为例,梯度下降算法就是一种训练参数 w 到最佳值的一种算法,w 每次变化的趋势由 a(学习率:一种超参数,由人手动设置调节),以及cost 的导数来决定,具体公式如下:  

注: 此时cost函数是指所有的损失函数之和

针对模型 y=x*w 的梯度下降算法的公式化简如下:

 根据化简之后的公式,就可以编写代码,对 w 进行训练,具体代码如下:

import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

w = 1.0


def forward(x):
    return x * w


def cost(xs, ys):
    cost = 0
    for x, y in zip(xs, ys):
        y_pred = forward(x)
        cost += (y_pred - y) ** 2
        return cost / len(xs)


def gradient(xs, ys):
    grad = 0
    for x, y in zip(xs, ys):
        grad += 2 * x * (x * w - y)
        return grad / len(xs)


print('训练前的预测', 4, forward(4))

cost_list = []
epoch_list = []
# 开始训练(100次训练)
for epoch in range(150):
    epoch_list.append(epoch)
    cost_val = cost(x_data, y_data)
    cost_list.append(cost_val)
    grad_val = gradient(x_data, y_data)
    w -= 0.1 * grad_val
    print('Epoch:', epoch, 'w=', w, 'loss=', cost_val)

print('训练之后的预测', 4, forward(4))

# 画图

plt.plot(epoch_list, cost_list)
plt.ylabel('Cost')
plt.xlabel('Epoch')
plt.show()

 运行截图如图所示:

 Epoch是训练次数,Cost是误差,可以看到随着训练次数的增加,误差越来越小,趋近于0.

随机梯度下降算法

       随机梯度下降算法与梯度下降算法的不同之处在于,随机梯度下降算法不再计算损失函数之和的导数,而是随机选取任一随机函数计算导数,随机的决定 w 下次的变化趋势,具体公式变化如图:

 具体代码如下:

import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

w = 1.0


def forward(x):
    return x * w


def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) ** 2


def gradient(x, y):
    return 2 * x * (x * w - y)


print('训练前的预测', 4, forward(4))

epoch_list = []
loss_list = []
# 开始训练(100次训练)
for epoch in range(100):
    for x, y in zip(x_data, y_data):

        grad = gradient(x, y)
        w -= 0.01 * grad
        l = loss(x, y)
        loss_list.append(l)
        epoch_list.append(epoch)
        print('Epoch:', epoch, 'w=', w, 'loss=', l)

print('训练之后的预测', 4, forward(4))

# 画图
plt.plot(epoch_list, loss_list)
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.grid(1)
plt.show()

 运行截图如图所示:

从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版 深度学习是人工智能领域的核心技术之一,而小批量随机梯度下降(Mini-Batch Stochastic Gradient Descent, SGD)是训练神经网络的基石算法。本文将通过一个完整的 PyTorch 实现,带你深入理解小批量 SGD 的工作原理。我们以 NASA 的为例,展示如何使用 PyTorch 构建数据加载器、定义模型、训练神经网络,并可视化训练过程。小批量随机梯度下降公式:本文的目标是通过代码逐步解析深度学习的核心组件,帮助初学者从实践中掌握理论知识。 阅读详情

相关推荐

《PyTorch深度学习实践》B站视频学习笔记

其中in_features和out_features都是指单个样本的维度。是否求均值在每个batch数量都一样时对结果没有影响。torch.optim.SGD()中需要传入的params(参数)是指需要更新的参数,model.parameters()是将模型中所有的参数都取出来。

m0_48610901的博客 965

pytorch入门第二课——随机梯度下降(SGD)

前言 b站刘洪普老师的pytorch入门课笔记。记录学习。 本文内容为梯度下降算法,绘制迭代-损失图。 目录前言方法jupyter record梯度下降随机梯度下降法SGD(stochastic gradient descent)(使用较多)总结参考 方法 梯度下降的思想:随机选择一个方向,然后每次迈步都选择最陡的方向,直到这个方向上能达到的最低点。有时候需要对原始的模型构建损失函数,然后通过优化算法对损失函数进行优化,以便寻找到最优的参数,使得损失函数的值最小。 Gradient:

程序猿进化梯 3028

刘二大人《PyTorch深度学习实践》

刘二大人《PyTorch深度学习实践》线性模型 线性模型 损失函数是针对一个样本的 training set得到的是一个平均平方误差MSE 穷举法绘制损失曲线:numpy和matplotlib import numpy as np import matplotlib.pyplot as plt #数据集 x_data = [1.0,2.0,3.0] y_data = [2.0,4.0,6.0] #定义模型 def forward(x): return x * w #定义损失函数 def loss

baimenglin的博客 3558

pytorch实现梯度下降 学习笔记

plt.scatter(x, y, s, c, marker, cmap, norm, alpha, linewidths, edgecolorsl) 函数。nn中的linear层 (shape) Sequnential 相当于一个存放层的list。首先构造一个人造数据集 我们知道真实的w和b 例如w = 【2,-3.4】,b=4.2。torch.normal函数(均值,方差,(样本大小,列数)【shape】)sgd (参数(w,b),学习率)每次拿出一个批量大小的x,y。X,y都做成列向量返回。

qq_45437271的博客 313

动手学PyTorch | (39) 小批量随机梯度下降

目录 1. 小批量梯度下降 2. 读取数据 3. 从0开始实现 4. 简洁实现 5. 小结 1. 小批量梯度下降 在每一次迭代中,梯度下降使用整个训练数据集来计算梯度,因此它有时也被称为批量梯度下降 (batch gradient descent)。而随机梯度下降在每次迭代中只随机采样一个样本来计算梯度。正如我们在前几节中所看到的,我们还可以在每轮迭代中随机均匀采样多个样本来组成一个...

sdu_hao的博客 3985

《Pytorch深度学习实践》课程合集(刘二大人)笔记

2 线性模型 深度学习步骤 数据集 —— 拿到的训练集,要分成两部分,训练集,交叉验证集 和 测试集 模型 训练 推理 ML常用损失函数

竦貊的博客 5793

pytorch实现随机梯度下降SGD

pytorch实现随机梯度下降SGD

qq_38621899的博客 458

[TC3XX]AURIX TC3XX系列之启动流程

本文介绍了微控制器(MCU)启动过程中固件(Firmware)和启动软件(SSW)的工作原理。MCU上电复位后,硬件完成初始化,BootROM中的固件开始执行,进行参数加载、模式选择等操作。SSW作为第一个执行的软件,负责时钟配置、安全检查、多核管理及启动模式选择,最终跳转至用户代码。启动模式包括内部Flash启动、Bootloader模式(通过ASC或CAN接口)和备用启动模式(ABM),具体由复位类型、引脚配置和UCB设置决定。文章特别指出英飞凌TC3xx系列芯片中固件不可修改,只能通过配置参数定制启动

redparrot2008的博客 1420

梯度下降实例:一元线性回归

前言 梯度下降作为一种求解函数局部最小值的方法,在机器学习的许多方面都有所体现,本文主要通过介绍一元线性回归进而引入梯度下降。 1.一元线性回归 首先要理解回归的概念。回归的目的就是通过几个已知数据来预测另一个数值型数据的目标值。假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就是要预测的目标值。这一计算公式称为回归方程,得到这个方程的过程就称为回归。 一元线性回归就是只包括一个自变量和一个因变量且二者之间的关系可以用一条直线表示,如果回归分析

qq_53430308的博客 1524

SAP 第三方销售

第三方销售

yanzibing99的博客 3514

Vue集成飞书前端JSSDK

文章目录前言<1>飞书前端JSSDK<2>使用步骤1.将JSSDK引入到VUE2.读入数据总结 前言 公司需要使用飞书软件,所以转战飞书开发,也是对新知识的探索与研究,飞书SDK也一直都在更新,路虽远,行必达。 <1>飞书前端JSSDK 1、官网地址:https://open.feishu.cn/document/uYjL24iN/uITO4IjLykDOy4iM5gjM 2、当前使用的飞书前端JSSDk的版本:1.5.4 <!-- 在html文档中 --&gt

A 1万+

【PyTorch】深度学习实战之梯度下降算法

梯度下降算法:可能只会找到局部最优点 随机梯度下降算法:随机梯度下降更容易找到全局最优点,类似于快速排序选基点,随机选取能够提高找到全局最优点的概率 梯度下降算法实现代码: import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D x_data = [1.0, 2.0, 3.0] y_data = [2.0, 4.0, 6.0]

少年白马 624

Drugbank XML文件解析

DrugBank Release Version 5.1.13 | DrugBank Online点击download下载XML文件,也可以使用COMMAND命令下载。(下载文件需要先注册一个账号文件,就可以下载了)下载好压缩文件,并解压会得到如下两个文件:full database.xml就是我们所需要的XML文件,完整的XML很大,大约为1.6G因为原始的文件非常大,直接查看XML文件是有困难的,所以我们使用一下命令来查看该文件的前一百行 得到如下输出 对于前三行 第一行:表示XML 版本为 1.0

qtjbzs的博客 585

【B站_刘二大人pytorch深度学习实践】笔记作业代码合集

手动训练:线性模型,梯度下降,BP Pytorch框架训练:线性回归,LogisticRegression,多维特征输入,加载数据集,多分类,CNN,RNN

m0_58586235的博客 3840

一分钟理解 AP(Affinity Propagation) 亲和⼒传播算法

这篇博客发出来后,我用 Rust 复现代码出现问题。为此,我对对照了 sklearn 的相关代码,反复比较了两天,发现一处 bug,把 += 误写成了 =,导致数据量大的时候完全无法聚类。这个debug过程让我仔细梳理的 AP 算法的计算过程,今天我对这篇博客做了大规模修改,以便能原样展现原论文思想。

程序猿视角 3219

Vanna 2.0:基于LLM的智能文本到SQL框架,实现企业级数据查询与权限控制

文本到SQL技术是自然语言处理与数据库交互的重要桥梁,它允许用户使用日常语言直接查询数据库,无需编写复杂的SQL语句。其核心原理是利用大语言模型理解用户意图,并结合检索增强生成技术,将自然语言问题转换为准确的结构化查询语言。这项技术的价值在于大幅降低了数据访问门槛,提升了业务人员的数据自助分析能力,并能在金融分析、销售报表、运营监控等场景中实现实时数据洞察。Vanna 2.0作为一个开源框架,通过引入用户感知的智能体架构和行级安全策略,解决了企业级应用中的多租户数据隔离与权限控制等关键问题,使得自然语言数据

weixin_42629522的博客 544

Pytorch深度学习——用Mini-Batch训练数据(B站刘二大人P8学习笔记)

先前我们学习的内容一种情况是采用Full-Batch来训练数据,还有一种情况是在随机梯度下降中,只去其中一个数据来计算梯度,这种情况可以使我我们很好的解决训练数据时遇到的鞍点问题,但是会导致时间过长。所以,接下来我们要学习的是采用Mini-Batch的方法来训练数据,这种方式可以均衡性能和训练时间上的需求。 Epoch Batch-Size Iteration shuffle 是否打乱顺序

Learning_AI的博客 7411

解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题 1.问题描述 由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示 calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复 但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的 2.解决方法 期初排查时,我觉得可能是由于当前master

江晓龙的博客 4807

Pytorch深度学习实践笔记3(b站刘二大人)

mini-batch GD采取了一个折中的方法,每次选取一定数目(mini-batch)的样本组成一个小批量样本,然后用这个小批量来更新梯度,这样不仅可以减少计算成本,还可以提高算法稳定性。

发狂的小花的博客 1716

【docker】第10篇 Failed with result ‘exit-code和Start request repeated too quickly和Failed to start Docker

【docker】解决 Failed with result 'exit-code'和Start request repeated too quickly和Failed to start Docker。

Fanjufei的博客 6819

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【刘二大人】pytorch深度学习实践(二):梯度下降算法详解和代码实现(梯度下降、随机梯度下降、小批量梯度下降的对比)

现在多使用小批量随机梯度下降算法来进行梯度的更新。

CV在读 3752

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【PyTorch】PyTorch深度学习实践|视频学习笔记|P1-P5

刘老师PyTorch深度学习实践课程的P1-P5,代码与笔记

kodoshinichi的博客 5672

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Pytorch深度学习实践笔记4(b站刘二大人)

Back propagation (BP),训练神经网络的目标是优化代价函数cost,使得cost找到以一个全局或者局部最优值。让cost尽可能的接近0,这样得到的weights和bias是最好的,由于需要不断的调整参数让cost收敛,cost在梯度的相反反向下降最快,所以提出了BP算法,就是来计算weights和bias的梯度(偏导数的,加速训练时的收敛速度,避免无效的训练。

发狂的小花的博客 1305

Pytorch深度学习实践_刘二大人

深度学习实践

zhENGHAOSTU的博客 3171

【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】

【从零开始学习深度学习】38. Pytorch实战案例:梯度下降、随机梯度下降、小批量随机梯度下降3种优化算法对比【含数据集与源码】

阿旭的博客 2826

【深度学习】梯度下降、随机梯度下降、小批量随机梯度下降(pyTorch)

Contents1 梯度下降和随机梯度下降1.1 一维梯度下降1.2 学习率1.3 多维梯度下降1.4 随机梯度下降2 小批量随机梯度下降2.1 读取数据2.2 从零开始实现2.4 小批量随机梯度下降简洁实现 1 梯度下降和随机梯度下降 1.1 一维梯度下降 %matplotlib inline import numpy as np import torch import math import sys sys.path.append('..') import d2lzh_pytorch as d2l d

Bryce-HJ 1111
上一篇: PyTorch深度学习——线性模型(B站刘二大人P2作业)
下一篇: PyTorch深度学习——反向传播算法及代码实例(B站刘二大人P4学习笔记)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习CV的研一小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值