当前位置: 首页 > news >正文

wordpress导航网站十大最靠谱教育培训机构

wordpress导航网站,十大最靠谱教育培训机构,学广告设计的培训机构,电商网站开发实训软件文章目录 前言代码模拟梯度下降构建函数与导函数函数的可视化求这个方程的最小值(直接求导)求方程最小值(不令方程导为0)【梯度下降】eta0.1eta 0.2eta 50eta 0.01画出eta0.1时的梯度下降x的变化过程 总结 前言 💫你…

文章目录

  • 前言
  • 代码模拟梯度下降
    • 构建函数与导函数
    • 函数的可视化
    • 求这个方程的最小值(直接求导)
    • 求方程最小值(不令方程导为0)【梯度下降】
      • eta=0.1
      • eta = 0.2
      • eta = 50
      • eta = 0.01
      • 画出eta=0.1时的梯度下降x的变化过程
  • 总结

前言

💫你好,我是辰chen,本文旨在准备考研复试或就业
💫本文内容来自某机构网课,是我为复试准备的第一个项目
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 预置知识详见我的AIoT板块,需掌握 基本Python语法, Numpy, Pandas, Matplotlib

以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:

💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解

代码模拟梯度下降

import numpy as np
import matplotlib.pyplot as plt

构建函数与导函数

f = lambda x : (x - 3.5) ** 2 - 4.5 * x + 10
# 导函数
g = lambda x : 2 * (x - 3.5) - 4.5

函数的可视化

x = np.linspace(0, 11.5, 100)
y = f(x)plt.plot(x, y)
# 画出最小值点(5.75即为最小值点,具体计算即为令导数为0,见下个代码块)
plt.scatter(5.75, f(5.75), color = 'red', s = 30)

在这里插入图片描述

求这个方程的最小值(直接求导)

'''
令导数值 = 0
2 * (x - 3.5) - 4.5 = 0
2 * x = 11.5
x = 5.75
'''

求方程最小值(不令方程导为0)【梯度下降】

eta=0.1

# 给一个步幅,也就是学习率
eta = 0.1 # 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述
可以看到,最终逼近的结果为 5.750373845373813,可以认为是正确解

eta = 0.2

eta 调大之后,可以明显观察到收敛的快了

# 给一个步幅,也就是学习率
eta = 0.2# 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述

eta = 50

当然,eta 的值也不可以设的过大,会造成发散

# 给一个步幅,也就是学习率
eta = 50# 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述
这是一个死循环

eta = 0.01

如果 eta 的值设的比较小,会收敛,但是会很慢

# 给一个步幅,也就是学习率
eta = 0.01# 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述

画出eta=0.1时的梯度下降x的变化过程

# 多两行下述代码:
# x_ = [x]
#     x_.append(x)eta = 0.1 x = np.random.randint(0, 12, size = 1)[0]last_x = x + 0.1precision = 0.0001
print('-----------------随机的x是:', x)x_ = [x]   # Python中的列表
count = 0  # 记录梯度下降的次数while True:if np.abs(x - last_x) < precision:   breaklast_x = xcount += 1x = x - eta * g(x)x_.append(x)     # 把更新后的 x 加入到 x_ 中print('+++++++++++++++++梯度下降的次数是:', count)# x1 是 Numpy 的数组
x1 = np.linspace(0, 11.5, 100)
y1 = f(x1)
plt.figure(figsize = (12, 9))   # 调整图像大小
plt.plot(x1, y1)# 散点图
x_ = np.array(x_)   # x_ 需要从 Python 列表转为 Numpy 的数组,否则无法绘图
plt.scatter(x_, f(x_), color = 'red', s = 30)

在这里插入图片描述

总结

模拟的时候还发现了 eta 设置的过小算出来的值也是错误的现象,知道了原因后会补在这里

在这里插入图片描述

http://www.hkea.cn/news/390650/

相关文章:

  • 如何设计网站中的上传功能搜索引擎技术基础
  • 余江区建设局网站百度搜索引擎优化的方法
  • 做网站用c 还是java万网域名注册教程
  • 青岛做网站那家好专业的网站优化公司排名
  • 网站如何做淘宝推广seo服务 收费
  • 学完js了可以做哪些网站营业推广的形式包括
  • 网站会员系统怎么做模版seo是指什么职位
  • 上海集团网站制作新闻 近期大事件
  • 商城网站验收标准seo关键词排名优化怎样收费
  • 睢宁做网站公司珠海百度关键字优化
  • 临安市住房和建设局网站伊春seo
  • 天津百度做网站多少钱游戏代理平台哪个好
  • b2b模式的网站google网站
  • 做优化网站哪个公司好十大营销策略
  • 软件商店app苏州网站关键词优化推广
  • wordpress添加日历首页优化公司
  • 日本可以自己做网站吗查询网站服务器
  • 做网站维护的人叫啥友情链接交换工具
  • 云南网站定制真正永久免费的建站系统有哪些
  • 温州做网站技术员沧州做网络推广的平台
  • wordpress media上海排名优化seobwyseo
  • 深圳网站建设科技有限公司注册一个网站
  • 网站设计改版seo关键词优化推广价格
  • 做网站什么主题比较好上海网站seo诊断
  • 设计苹果手机的网站病毒什么时候才能消失
  • 国外做化工产品的网站自媒体发布平台
  • 怎么做资源类网站百度搜索热度排名
  • 大片网站建设seo关键词排名优化评价
  • 网络营销推广课程培训苏州seo门户网
  • 做盗版影视网站如何给公司网站做推广