
【深度学习的数学】2-11 用Excel体验梯度下降法(用python实现)
发布日期:2021-05-10 09:13:14
浏览次数:21
分类:精选文章
本文共 2914 字,大约阅读时间需要 9 分钟。
梯度下降法是神经网络计算的基础,下面我们用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.00 gra_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_x y = y + delta_y gra_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
貌似这么简单的计算也用不着使用函数吧??徒增代码量??
发表评论
最新留言
不错!
[***.144.177.141]2025年04月03日 05时50分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JMeter 中实现发送Java请求
2021-05-09
设计模式点滴
2021-05-09
数据库优化
2021-05-09
[备忘]域用户登陆出现“此工作站和主域间的信任关系失败”错误解决方法
2021-05-09
继续聊WPF——用Blend自定义Listview控件的列表头
2021-05-09
【WPF】制作自定义的列表项面板
2021-05-09
【.net 深呼吸】启动一个进程并实时获取状态信息
2021-05-09
OO_Unit2 多线程电梯总结
2021-05-09
json-lib的使用《二》
2021-05-09
LeetCode52题,别再问我N皇后问题了
2021-05-09
简单实用算法——字节位序反转
2021-05-09
webpack之带有可自动打开浏览器及热重载的基本配置
2021-05-09
前端的批量接口如何快速响应?有没有通用解决方案?
2021-05-09
Shader 入门笔记(一) 如何学习shader
2021-05-09
Huffman树及其编解码
2021-05-09
分布式、高并发、高性能场景(抢购、秒杀、抢票、限时竞答)数据一致性解决方案
2021-05-09
淘宝镜像
2021-05-09
20.波利亚过程
2021-05-09
04_Mysql配置文件(重要参数)
2021-05-09