news 2026/5/6 7:06:42

Day 4 学习优化方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day 4 学习优化方法

学习优化方法

SGD

代码演示

class SGD: def __init__(self,lr=0.01): self.lr=lr def update(self,params,grads): for key in params.keys(): params[key]-=self.lr*grads[key]

SGD的缺点

动量法(Momentum)

数学原理

代码演示

class Momentum: #初始化 def __init__(self,lr=0.01,momentum=0.9): self.lr=lr self.momentum=momentum self.v=None #更新方法 def update(self,params,grads): #对v进行初始化 if self.v is None: self.v={} for key , val in params.items(): self.v[key]=np.zeros_like(val) #按公式进行参数更新 for key in params.keys(): self.v[key]=self.momentum * self.v[key] - self.lr *grads[key] params[key] += self.v[key]

学习率衰减

等间隔衰减

每隔固定训练周期,学习率按一定比例下降

指定间隔衰减

在指定的训练周期,学习率按一定系数衰减

指数衰减

学习率按指数函数进行衰减

AdaGrad

数学原理

代码演示

class AdaGrad: #初始化 def __init__(self,lr=0.01): self.lr=lr self.h=None #更新方法 def update(self,params,grads): #对h进行初始化 if self.h is None: self.h={} for key,val in params.items(): self.h[key]=np.zeros_like(val) #更新参数 for key in params.keys(): self.h[key]+=grads[key]*grads[key] params[key]-=self.lr*(grads[key]/np.sqrt(self.h[key]+1e-8))

RMSProp

数学原理

代码演示

只需对之前的数学公式部分稍加更改即可

Adam

数学原理

是偏差修正,用来增加训练初期的启动速度。

代码演示

class Adam: #初始化 def __init__(self,lr=0.01,alpha1=0.9,alpha2=0.999): self.lr=lr self.alpha1=alpha1 self.alpha2=alpha2 self.v=None self.h=None self.iter=0 #更新方法 def update(self,params,grads): #对每个v和h进行初始化 if self.v is None: self.v,self.h={},{} for key,val in params.items(): self.v[key]=np.zeros_like(val) self.h[key] = np.zeros_like(val) self.iter+=1 #按照公式改变学习率参数 a=self.lr*np.sqrt(1-self.alpha2**self.iter)/(1-self.alpha1**self.iter) #按照公式更新参数 for key in params.keys(): self.v[key]=self.alpha1*self.v[key]+(1-self.alpha1)*grads[key] self.h[key] = self.alpha2 * self.h[key] +(1 - self.alpha2) * (grads[key]**2) params[key]-=a*self.v[key]/(np.sqrt(self.h[key])+1e-8)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 7:04:45

AI的终极意义,解放人(过程曲折):去感受风,去看日落,去爱具体的人,去奔赴自己的热爱,去经历那些好的坏的、圆满的遗憾的,独属于你的人生

AI能考过律师考试,却永远读不懂“孤独”是什么意思 目录 AI能考过律师考试,却永远读不懂“孤独”是什么意思 我们到底会不会被AI取代? 于是有了 AI是怎么回事」探索 AI的终极意义,从来不是取代人,而是解放人。 我们到底会不会被AI取代? 不知道你有没有过这样一个瞬间:…

作者头像 李华
网站建设 2026/5/6 7:04:30

快速验证单片机tlsf内存管理,快马一键生成stm32适配原型

今天在做一个STM32项目时,遇到了内存管理的问题。传统的malloc/free在资源受限的单片机环境下效率不高,于是研究了一下TLSF(Two-Level Segregated Fit)内存管理算法。这种算法特别适合嵌入式系统,因为它具有快速响应和…

作者头像 李华
网站建设 2026/5/6 7:01:26

android c++复制构造函数使用示例代码

class PeopleFlow{int age0;string gender; public:PeopleFlow(PeopleFlow &people_flow){this->agepeople_flow.age;this->genderpeople_flow.gender;}PeopleFlow(){this->age20;this->gender"male";}string to_string(){string str"年龄&…

作者头像 李华
网站建设 2026/5/6 7:00:28

个人开源项目实战指南:从ClawCoder看项目构建与社区运营

1. 项目概述:从“ClawCoder”看个人开源项目的价值与构建最近在GitHub上闲逛,发现了一个挺有意思的项目,叫“clawcoder”,作者是Chan-0901。点进去一看,虽然项目描述可能比较简洁,甚至有些“极简主义”&…

作者头像 李华