pytorch(二)梯度下降算法

VASP+Multiwfn+VMD静电势计算与可视化全流程解析 静电势是表征分子与材料表面电荷分布的关键物理量,它通过求解泊松方程,将电子密度与原子核电荷在空间中的贡献结合起来,直观揭示体系的电子富集与缺失区域。这一性质在理解化学反应活性、分子间相互作用(如氢键、卤键)以及材料表面性质方面具有重要价值。在计算材料科学与量子化学领域,基于第一性原理计算获得高精度电子结构数据后,如何将其转化为可直观分析的静电势图,是连接理论计算与物理解释的关键技术环节。本文聚焦于构建一条高效、可控的端到端工作流,详细解析如何利用VASP进行高精度电子密度计算,通过专业波函数分析软件Mult 阅读详情

在线性模型训练的时候,一开始并不知道w的最优值是什么,可以使用一个随机值来作为w的初始值,使用一定的算法来对w进行更新

优化问题

寻找使得目标函数最优的权重组合的问题就是优化问题

梯度下降

通俗的讲,梯度下降就是使得梯度往下降的方向,也就是负方向走。一般来说,梯度往正方向走,表示梯度大于0,,表示函数是往递增方向走,而这里需要的是找最低点,最低点一定是在往下走,所以这里的梯度要取负号。梯度下降更新权重的公式如下(注意是减),α表示学习率:
在这里插入图片描述
梯度下降算法属于贪心算法的一种,它的权重的更新,每一次都是朝着梯度下降最快的方向进行更新,当梯度为0的时候,算法收敛,权重不再更新。梯度下降可能得到的是一个局部最优解(非凸函数)。

在深度学习中,尽管梯度下降算法会陷入局部最优,但是在深度学习中梯度下降算法依旧广泛应用:在之前大家认为,深度学习的目标函数会出现很多的局部最优解,但是实际上,其损失函数并没有很多的局部最优解。但是深度学习的损失函数会存在很多的鞍点(也就某一点上梯度为0,从一个切面上看是最小值,从另一个切面看是最大值的点,如下图 ),导致权重无法继续迭代,可以使用动量法来解决鞍点问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码实现:

  • 要求:模拟梯度下降算法,计算在x_data、y_data数据集下,y=w*x模型找到合适的w的值。

  • 和第二课不同的是,第一课的w是我们认为设定的,通过一个for循环使得w迭代,这一次需要的是通过模型找到适合的w

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):
    costs=0
    # 用zip打包成元祖,并返回元祖组成的列表
    for x,y in zip(xs,ys):
        y_pred=forward(x)
        costs+=(y_pred-y)**2       
    return costs/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)

cost_list=[]
epoch_list=[]
print('predict before training',forward(4))

for epoch in range(200):
    cost_val=cost(x_data,y_data)
    grad_val=gradient(x_data,y_data)
    w-=0.01*grad_val
    
    epoch_list.append(epoch)
    cost_list.append(cost_val)
    
    print('epoch:',epoch,'w=',w,'loss=',cost_val)

print('predict after training:',forward(4))

# 画图
plt.plot(epoch_list,cost_list)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

部分结果截图
在这里插入图片描述

随机梯度下降

在上面的梯度下降中,求损失的时候用的是全部数据的平均损失作为更新的依据。而随机梯度下降是在全部的数据中随机选择一个作为更新的依据。使用随机梯度下降可以有效的避开鞍点

在这里插入图片描述

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(x,y):
    y_pred=forward(x)
    return (y_pred-y)**2

# 计算梯度
def gradient(x,y):
    return 2*x*(x*w-y)

cost_list=[]
epoch_list=[]
print('predict before training',forward(4))

for epoch in range(200):
    for x,y in zip(x_data,y_data):
        grad_val=gradient(x,y)
        print('\tgrad:',x,y,w)
        w-=0.01*grad_val
        print('\tgrad:',x,y,w,'\n')
        cost_val=cost(x,y)
    
    epoch_list.append(epoch)
    cost_list.append(cost_val)
    print('epoch:',epoch,'w=',w,'loss=',cost_val)

print('predict after training:',forward(4))

# 画图
plt.plot(epoch_list,cost_list)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

结果截图:
在这里插入图片描述

在第一个梯度下降中,样本x与样本x+1之间没有时序关系,我们计算的是他们的总的损失,这些运行时可以并行运行的。但是在第二个随机梯度下降中,我们是先计算了x再计算的x+1,数据之间存在先后的关系,有依赖关系,不能用并行计算。所以梯度下降可以有效提高运算的效率,而随机梯度下降可以获得一个优异的w。把以上两种方法折中,就产生了小批量随机梯度下降,取了一种性能与时间复杂度之间的折中。

【OpenClaw从入门到精通】第09篇:企业级实践——将OpenClaw接入钉钉,打造7×24小时数字员工(2026实测版) 本文聚焦OpenClaw的企业级落地实践,以“招聘数字专员”为核心场景,完整演示从钉钉接入到全流程自动化的实现路径。内容涵盖企业级部署架构设计、前置环境搭建、核心技能开发、流程串联、安全权限管控及运维监控六大模块,详解简历解析、岗位匹配、外呼集成、CRM同步、日历提醒等关键技能的构建逻辑与代码实现。借鉴中关村科金、网易智企的企业级实践经验,重点突破企业知识融合、安全权限管控、业务系统连接三大核心门槛,提供可直接参考的配置示例与操作步骤。所有技术方案均基于公开文档与实测验证,兼顾新手入门与进阶实操。 阅读详情

相关推荐

别再死记硬背注意力机制了!用Python+PyTorch从零实现一个HAN(Hierarchical Attention Network)

本文详细介绍了如何使用Python和PyTorch从零实现Hierarchical Attention Network(HAN),通过代码级解析帮助读者深入理解层次注意力机制。文章涵盖词级和句子级注意力层的构建、完整HAN架构的实现、训练技巧及注意力可视化方法,特别适合希望掌握高级NLP技术的开发者。

weixin_28744423的博客 163

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

BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码)

本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。

weixin_29192211的博客 109

pytorch基础操作(三)梯度下降(小批量)计算线性回归

pytorch基础操作(三)梯度下降(小批量)计算线性回归

qq_44665283的博客 2022

修复zookeeper未授权访问漏洞

【代码】修复zookeeper未授权访问漏洞。

qq_28392947的博客 4068

Innovus ECO修复时序违例:ecoAddRepeater插Buffer原理与实战

芯片物理设计越到后期,时序收敛越依赖局部修正而非全局重跑。ECO(Engineering Change Order)作为数字后端高频操作,能在不破坏既有布局布线结果的前提下,精准修复DRV违例、hold时序问题或实现功能补丁。其中,插入Buffer或Inverter是拆解长线RC负载、改善max_transition/max_capacitance最直接的手段。Innovus提供的ecoAddRepeater命令封装了单元选择、坐标摆放和网表重连等底层细节,配合ecoRoute可快速完成绕线。合理选型Buf

weixin_31858171的博客 300

机器学习及Pytorch(二、梯度下降算法)

我们知道,学习任务就是找到让MSE最小的权重,假设我们权重选在w=3.5这一点,很显然此时MSE大概在12左右,不是最小值,为了得到目标权重,我们就应该让w=3.5这一个“小球”往函数值下降的地方走,也就是在w=3.5这一处放一颗小球,小球应该往坡度向下的方向滚。经过一百轮的训练,我们可以从数据中看出,在最后几轮,w的值非常接近于2.0,loss的值非常接近于0,因此我们可以认定,预测可以得出四个小时的学习,会得到8分。为了普适多元线性模型的情况,我们用梯度来在某点处最大下降坡度,也就是小球滚下去的方向。

weixin_67526755的博客 285

【脑电分析系列】第15篇:脑电功能连接性与脑网络分析(二):Granger因果性、图论指标与复杂网络构建

摘要: 本文深入探讨了脑电(EEG)分析中的高阶连接性方法——有效连接(Effective Connectivity),重点介绍了Granger因果性(Granger Causality, GC)的原理与应用。GC通过统计预测揭示脑区间信息流动方向,超越了传统功能连接的同步性分析。文章还结合图论指标(如度、路径长度、聚类系数和模块化)量化脑网络的拓扑结构,并通过Python代码(MNE和NetworkX库)演示了从EEG数据构建、分析复杂脑网络的完整流程。该研究为理解大脑动态互动、认知任务信息流及神经系统疾

qq_32516809的博客 1563

Pytorch学习笔记:梯度下降算法

分治方法:先分成n×n个点进行搜索,选择最低的点,对最低的点再分成n×n份再次进行搜索,选择最小的值,反复如此,找到最小值。但是这对于凸函数是较为有用的,对于不规则的函数,可能搜索到的是极小值点(局部最优点),而不是最小值点(全局最优点)。 Gradient Descent Algorithm : 梯度下降算法(贪心思想,局部最优) Gradient : 梯度,梯度大于0上升,梯度小于0下降,所以参数向梯度的反方向更新。 w = w − x g ′ ( w ) x:学习率 损失函数的局部最优点比较少,.

Java小白的博客 337

搬运机器人系列编程:KUKA KR QUANTEC_(2).KUKA KRL语言编程基础

定义一个函数END!调用函数PRINT "结果: ", result!定义一个过程PRINT msgEND!调用过程printMessage("欢迎使用 KUKA 机器人")!定义搬运零件的起始位置和目标位置!定义焊接路径的各个点!定义喷涂路径的各个点KUKA Robot Language (KRL) 是一种专门为工业机器人设计的编程语言,具有结构化编程、丰富的库函数、实时性以及集成性等特点。

zhubeibei168的博客 1246

Android 13 SPRD 源码默认打开多用户实际无效果问题修复

【代码】Android 13 SPRD 源码默认打开多用户实际无效果问题修复。

m0_60898338的博客 449

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

梯度下降算法

Learning_AI的博客 1951

点云配准3:3d-ndt算法在pcl上的实现以及参数设置

3d-ndt算法在pcl上的使用方法以及参数设置

诺有缸的高飞鸟的博客 7892

pytorch学习(二):梯度下降算法

优化问题:即求loss最小值。 Gradient: Update: 其中,α称为学习率。(采用贪心策略) 在神经网络中,局部最优点比较小,但是会存在很多的鞍点,即g=0,此时就很难再进行迭代。因此,鞍点是深度学习当中最需要解决的难点。 其中,由于: Gradient:= = = = ∴Up...

weixin_44425647的博客 613

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

刘二大人《PyTorch深度学习实践》梯度下降算法

使用所有样本的Loss性能好但是时间复杂度高,使用平均样本loss则反之,于是折中每次使用一组(Mini-Batch)更新梯度。引入随机性,这样即使陷入到鞍点也能跨过鞍点,并且在训练大模型的时候也能加快训练速度。梯度下降(Gradient Descent),求偏导找往loss最小值去的方向。特殊点:鞍点(如马鞍),此时梯度=0(梯度消失),不再更新权值。是学习率也就是探索梯度的步长,太大会发散,太小时间太慢。的随机梯度下降的代码并画loss值的图。的梯度下降的代码并画loss值的图。

m0_66184663的博客 174

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

刘二大人 PyTorch深度学习实践 笔记 P3 梯度下降算法

刘二大人 PyTorch深度学习实践 笔记 P3 梯度下降算法

qq_44948213的博客 846

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

刘二大人《PyTorch深度学习实践》p3梯度下降算法

ps.感觉和研一课程《最优化理论》里面的最速下降法和《数值统计》的均方误差有点关联,学的课程终于不是完全无用了!随机梯度下降是拿单个样本的损失函数对权重求导,进行更新。顺便安利一下俺的小红书,一个迷茫但努力发光的小白。,顶多修改一下透明度即可。

xzrrr的博客 460

刘二大人 《PyTorch深度学习实践》第3讲 梯度下降算法

指路 ☞《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili 知识补充: 1、预设一个w值,然后算斜率(梯度),如果梯度大于0,我们要往梯度小的方向进行,即减去它,反之一样。α是学习率,此处设为0.01 2、梯度下降法只能算出局部最优,没办法得到全局最优 3、鞍点,梯度为0 4、如果cost随epoch曲线上升了,原因可能是α取大了;加权均值可以让曲线更圆滑 5、随机梯度下降公式 6、梯度下降与随机梯度下降之间的区别 ***...

qq_39705798的博客 940

Pytorch深度学习(二):梯度下降算法和随机梯度下降

梯度下降算法和随机梯度下降一、梯度下降算法1.概念:2.代码如下:二、随机梯度下降1.演变过程2.代码如下 一、梯度下降算法 1.概念: 梯度下降法简单来说就是一种寻找目标函数最小化的方法。在神经网络中,局部最优点比较小,但是会存在很多的鞍点,即g=0,此时就很难再进行迭代。因此,鞍点是深度学习当中最需要解决的难点。 计算梯度: 最后获得更新后的w,其中α是学习率 2.代码如下: import numpy as np import matplotlib.pyplot as plt x_data =

qq_42585108的博客 752

Pytorch深度学习实践(二):梯度下降算法

假设一个场景:小明被扔在山顶,但是他有恐高症,需要找到最快的下山路径,但是困于自己是近视眼,无法确认最快的路径,这时候就可以用到梯度下降方法。 梯度下降算法基本思想:以他当前的位置为基准,寻找坡度最大的地方,然后朝着这个方向往下走一小段距离,然后以此为新的出发点,重复以上的过程,最终下山。 梯度:(高数基本知识) 更新:(α是学习率,学习率一般设置为0.01,过大的话导致梯度变化太大) 平均梯度下降算法代码实现: import...

HaiDian_Franky的博客 402

刘二大人《Pytorch深度学习与实践》03梯度下降算法

1、梯度下降与随机梯度下降,其中梯度下降被隐藏起来了,只要把"""删除掉就 import matplotlib.pyplot as plt x_data = [1.0, 2.0, 3.0] y_data = [2.0, 4.0, 6.0] w = 1.0 epoch_list = [] cost_list = [] def forward(x): return x * w """ def cost(x1, y1): cost = 0 for x, y in zip(x1

m0_58327216的博客 598

刘二大人 《PyTorch深度学习实践》P3 梯度下降算法

存在的问题:当权重较多时,数据量会非常大分成四份,找16个点,找出其中比较小的块,再分成四分……存在的问题:如果是非凸函数可能会错过最优点优化问题:使目标函数最小的权重组合我们称之为优化问题梯度下降算法: 原来的权重 - cost对权重的导数乘以学习率梯度下降算法类似于贪心算法,用梯度下降算法可以得到局部最优点,但是没办法保证找到全局最优点目前梯度下降算法使用的很多,因为在实际应用过程中很难陷入局部最优点。但是鞍点成了最大的问题,即梯度为0,会导致算法无法继续迭代。

qq_45773901的博客 141

PyTorch学习记录(二)梯度下降算法与反向传播

第一次接触pytorch,本贴仅记录学习过程,侵删 在B站看完了视频的P3.梯度下降算法以及P4.反向传播后,先记录一些笔记。 视频地址:《PyTorch深度学习实践》完结合集 04. 反向传播 真的强烈推荐刘二大人的这个课程,老师讲的太清楚了!我本来是准备直接在PyTorch官网里看PyTorch 1.4 中文文档 & 教程的,但是总会碰到一些自己不理解的地方,需要花费一些时间去搜索、理解。后来无意之间在B站发现了这个视频以后,发现PyTorch文档配合视频真的可以说是理解毫无障碍了。 impor

djy2069的博客 271

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

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

CV在读 3752

刘二大人《pytorch深度学习》 第三讲 梯度下降算法

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) .

weixin_60189029的博客 266

<Pytorch深度学习实践>(二):梯度下降算法 (Gradient Descent)

梯度下降算法   穷举法和观察法不可行,因为w的数量如果过大,将会大大增加时间开销且可能找到局部最优解   梯度下降:(能够找到局部最优解,但也许找不到全局最优解(没有任何一个局部最优比他好))   那么为什么深度学习中大多数还是使用梯度下降来寻找最优解,因为在很多学习中得到结果,深度学习最优化问题中并不存在很多局部最优解。 但存在一个点(鞍点,偏导为0)   y=wx+by=wx+by=wx+b   MSE: cost(w)=1N∑n=1N(y^n−yn)2cost(w)=\frac{1}{N}\sum_

qq_39443703的博客 828
上一篇: python绘制三维图
下一篇: pytorch(三)反向传播
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值