梯度下降法是神经网络计算的基础,下面我们用python编程来体验它!

代码

# -*- coding: utf-8 -*-
"""
@File    : 梯度下降法求函数最小值.py
@Time    : 2020/5/17 21:30
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""# 函数
def f(a, b):return a ** 2 + b ** 2# 梯度
def calcu_gra_f2x(a, b):return 2 * adef calcu_gra_f2y(a, b):return 2 * b# 位移向量
def calcu_delta_x(gra_x, ita):return gra_x * -itadef calcu_delta_y(gra_y, ita):return gra_y * -itaif __name__ == '__main__':# 学习率eta = 0.1# 初始参数x, y = 3.00, 2.00gra_f2x, gra_f2y = calcu_gra_f2x(x, y), calcu_gra_f2y(x, y)delta_x, delta_y = calcu_delta_x(gra_f2x, eta), calcu_delta_y(gra_f2y, eta)z = f(x, y)# 执行梯度下降法for i in range(0, 20):print('第{:0>2d}轮\tx={:.2f}\ty={:.2f}\tgra_f2x={:.2f}\tgra_f2y={:.2f}\tdelta_x={:.2f}\tdelta_y={:.2f}\tz={:.2f}'.format(i, x, y, gra_f2x, gra_f2y, delta_x, delta_y, z))# 更新变量x = x + delta_xy = y + delta_ygra_f2x = calcu_gra_f2x(x, y)gra_f2y = calcu_gra_f2y(x, y)delta_x = calcu_delta_x(gra_f2x, eta)delta_y = calcu_delta_y(gra_f2y, eta)z = f(x, y)

结果:

D:\20200228_play_with_pytorch\python\python.exe C:/Users/SIQI/Desktop/20200511_用Excel体验梯度下降法(改成用python体验)/梯度下降法求函数最小值/梯度下降法求函数最小值.py
第00轮    x=3.00 y=2.00 gra_f2x=6.00   gra_f2y=4.00   delta_x=-0.60  delta_y=-0.40  z=13.00
第01轮    x=2.40 y=1.60 gra_f2x=4.80   gra_f2y=3.20   delta_x=-0.48  delta_y=-0.32  z=8.32
第02轮    x=1.92 y=1.28 gra_f2x=3.84   gra_f2y=2.56   delta_x=-0.38  delta_y=-0.26  z=5.32
第03轮    x=1.54 y=1.02 gra_f2x=3.07   gra_f2y=2.05   delta_x=-0.31  delta_y=-0.20  z=3.41
第04轮    x=1.23 y=0.82 gra_f2x=2.46   gra_f2y=1.64   delta_x=-0.25  delta_y=-0.16  z=2.18
第05轮    x=0.98 y=0.66 gra_f2x=1.97   gra_f2y=1.31   delta_x=-0.20  delta_y=-0.13  z=1.40
第06轮    x=0.79 y=0.52 gra_f2x=1.57   gra_f2y=1.05   delta_x=-0.16  delta_y=-0.10  z=0.89
第07轮    x=0.63 y=0.42 gra_f2x=1.26   gra_f2y=0.84   delta_x=-0.13  delta_y=-0.08  z=0.57
第08轮    x=0.50 y=0.34 gra_f2x=1.01   gra_f2y=0.67   delta_x=-0.10  delta_y=-0.07  z=0.37
第09轮    x=0.40 y=0.27 gra_f2x=0.81   gra_f2y=0.54   delta_x=-0.08  delta_y=-0.05  z=0.23
第10轮    x=0.32 y=0.21 gra_f2x=0.64   gra_f2y=0.43   delta_x=-0.06  delta_y=-0.04  z=0.15
第11轮    x=0.26 y=0.17 gra_f2x=0.52   gra_f2y=0.34   delta_x=-0.05  delta_y=-0.03  z=0.10
第12轮    x=0.21 y=0.14 gra_f2x=0.41   gra_f2y=0.27   delta_x=-0.04  delta_y=-0.03  z=0.06
第13轮    x=0.16 y=0.11 gra_f2x=0.33   gra_f2y=0.22   delta_x=-0.03  delta_y=-0.02  z=0.04
第14轮    x=0.13 y=0.09 gra_f2x=0.26   gra_f2y=0.18   delta_x=-0.03  delta_y=-0.02  z=0.03
第15轮    x=0.11 y=0.07 gra_f2x=0.21   gra_f2y=0.14   delta_x=-0.02  delta_y=-0.01  z=0.02
第16轮    x=0.08 y=0.06 gra_f2x=0.17   gra_f2y=0.11   delta_x=-0.02  delta_y=-0.01  z=0.01
第17轮    x=0.07 y=0.05 gra_f2x=0.14   gra_f2y=0.09   delta_x=-0.01  delta_y=-0.01  z=0.01
第18轮    x=0.05 y=0.04 gra_f2x=0.11   gra_f2y=0.07   delta_x=-0.01  delta_y=-0.01  z=0.00
第19轮    x=0.04 y=0.03 gra_f2x=0.09   gra_f2y=0.06   delta_x=-0.01  delta_y=-0.01  z=0.00Process finished with exit code 0

貌似这么简单的计算也用不着使用函数吧??徒增代码量??

参考文章:《深度学习的数学》之梯度下降法python实现

【深度学习的数学】2-11 用Excel体验梯度下降法(用python实现)相关推荐

  1. 机器学习、深度学习中常用的优化算法详解——梯度下降法、牛顿法、共轭梯度法

    一.梯度下降法 1.总述: 在机器学习中,基于基本的梯度下降法发展了三种梯度下降方法,分别为随机梯度下降法,批量梯度下降法以及小批量梯度下降法. (1)批量梯度下降法(Batch Gradient D ...

  2. 《深度学习的数学》笔记【各种概念】

    文章目录 第一章 神经网络的思想 1-1 神经网络和深度学习 1-2 神经元工作的数学表示 1-3 激活函数:将神经元的工作一般化 1-4 什么是神经网络 1-5 用恶魔来讲解神经网络的结构 1-6 ...

  3. 《深度学习的数学》二刷总结

    最近在配合花书看台大李宏毅的DeepLearning课程,其中遇到了Gradient Descent(梯度下降)的知识,感觉不是很熟练.想到之前老师给买过一本日本涌井良幸的<深度学习的数学> ...

  4. 《深度学习的数学》学习笔记

    深度学习的数学 本文为学习了涌井良幸和涌井贞美所著的<深度学习的数学>后的读书笔记及总结. 文章目录 第一章 神经网络的思想 1-1 神经网络和深度学习 1-2 神经元的数学表示 1-3 ...

  5. 【深度学习的数学】“2×4×1层带sigmoid激活函数的神经网络感知机对三角形平面的分类训练预测”,输出层加偏置b(实时绘制损失函数曲线)(对输入数据归一化)(奇迹出现了!)

    文章目录 前言 代码 修改之前错误的代码 知道为何Z的结果不能拟合到预期的5了 解决办法1:取消输出层神经单元的a和b(直接将z作为输出)(这个办法不行,影响神经单元的完整性,没法计算出输出层神经单元 ...

  6. 深度学习常用数学知识

    深度学习常用数学知识 为什么图片能被计算机读取?为什么我们可以用CNN对成千上万中图片进行分类,这背后的原理是什么?在了解原理之前,先给大家补点数学知识.因为无论是深度学习还是机器学习,背后都是有一些 ...

  7. 深度学习的数学-神经单元误差和反向传播

    文章目录 前言 正文 神经单元误差 梯度下降算法在实际应用中的难点 神经单元误差的定义和含义 神经单元误差关于权重和偏置的偏导数(重点) 关于权重的偏导数推导 偏置的偏导数推导 公式一般化 误差反向传 ...

  8. 《深度学习的数学》学习笔记(手写扫描)

    <深度学习的数学>(人民邮电出版社)本书主要介绍了阶层型神经网络.卷积神经网络.梯度下降法以及误差反向传播法(BP).书中语言风格比较俏皮,深入浅出.就是实战用的是Excel这点比较有个性 ...

  9. 【深度学习的数学】初始权重和偏置参数对模型训练非常重要!(预训练模型、预训练文件、初始权重)

    在进行 [深度学习的数学]接"2×3×1层带sigmoid激活函数的神经网络感知机对三角形平面的分类训练预测",输出层加偏置b 的测试中,我们发现,模型的初始权重对模型的训练结果是 ...

最新文章

  1. Don‘t support broadcast for binaryOp,
  2. 可与教科书相媲美的书——《世界是数字的》
  3. Python实训day11am【大作业思路梳理】
  4. zigbee 常规配置
  5. 前端学习(1162):箭头函数面试题
  6. ARM产品系列对应架构图
  7. RecyclerView 下拉刷新上拉加载
  8. python 生成文字图片_[ImageFont] 如何利用字体生成文字图片
  9. cisco5525防火墙***流量分离即***和nat并存的配置方式
  10. php zip扩展文件,php使用ZipArchive扩展实现文件的zip压缩与zip解压
  11. Nginx自签名证书的配置
  12. Unity 之 月签到累计签到代码实现(ScriptableObject应用 | DoTween入场动画)
  13. Revit中如何绘制轴线?CAD图纸转轴网操作
  14. 【炼丹】炼丹之如何打标(未完成。。。)
  15. Android传感器Motion Sensor开发实验
  16. 高德地图API武汉某区域的步行路径规划
  17. windows7 64位系统安装CPU版本TensorFlow(anaconda3.6)
  18. 如何使用iconfont
  19. 人工神经网络导论_神经网络导论
  20. EPSON ESC/POS指令

热门文章

  1. 日语单词检索 WebService 试运行 和简单说明
  2. 【学习笔记】 Javascript定时器
  3. 【财务思维】上市定价
  4. mysql数据库被黑客删除,您做好防范了吗?
  5. CONVT_NO_NUMBER
  6. BSP(BUSINESS SERVER PAGES)完整主机名设置及实现
  7. 用ABAP来实现柱状图和饼状图的输出
  8. BW事务代码SXMB_ADM、 SICF、SMICM简介
  9. 工作总结的写作方法与要领
  10. NBA史上薪水最高球员排行榜