码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 利用梯度下降法求最小值及动画展示


    视频讲解链接:3.1梯度下降法求最小值_哔哩哔哩_bilibili
     
    1. # 利用梯度下降法求最小值
    2. import matplotlib.pyplot as plt
    3. from matplotlib.animation import FuncAnimation
    4. import numpy as np
    5. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    6. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
    7. lr = 0.1 # 学习率
    8. epoches = 20 # 迭代次数
    9. x = 5 # 初始值
    10. y = x**2 # 目标损失函数
    11. x_list = [] # 记录每次迭代的x值, 放到list里面
    12. y_list = [] # 记录每次迭代的y值, 放到list里面
    13. x_list.append(x)
    14. y_list.append(y)
    15. print(f'第0次初始值, x = {x}, y=x**2={y}')
    16. #梯度下降求解量小值
    17. for i in range(epoches):
    18. i = i + 1
    19. x = x - lr * 2 * x
    20. y = x**2
    21. x_list.append(x)
    22. y_list.append(y)
    23. print(f'第{i}次迭代,x = x - lr * 2 * x={x:.4f},y=x**2={y:.4f}')
    24. # 下面是动画展示
    25. fig, ax = plt.subplots()
    26. plt.xlabel('x轴', fontsize=10)
    27. plt.ylabel('y轴', fontsize=10)
    28. circle = plt.Circle((5, 25), 0.2, fc='r')
    29. text = [f'第{i}次迭代x={x_list[i]:.4f},y={y_list[i]:.4f}' for i in range(21)]
    30. def init():
    31. ax.set_xlim(-5, 5)
    32. ax.set_ylim(-0, 25)
    33. ax.text(4.5, 25, "初始值x=5,y=25")
    34. ax.add_artist(circle)
    35. return circle,
    36. def animate(i):
    37. x = x_list[i]
    38. y = y_list[i]
    39. txt = ax.text(x-2, y+1, text[i])
    40. circle.center = (x, y)
    41. return circle,txt,
    42. x1 = np.array([-5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5])
    43. y1 = np.array(x1**2)
    44. plt.plot(x1, y1) # 画抛物线
    45. animation = FuncAnimation(fig, animate, init_func=init, frames=21, interval=2000, blit=True, repeat=False) # 画动画
    46. plt.show()

  • 相关阅读:
    Java多线程之Thread和Runnable多线程的简单实现(适合小白入门,十分简单)
    百度OCR 接口调用 提示 216101:param image not exist 问题解决
    大数据必学Java基础(五十九):Map接口源码部分
    Linux的 Bash 简介和使用方法
    第十五届全国交通运输领域青年学术会议,和鲸 Heywhale 携手龙船科技联合发布科研服务解决方案
    多轨音频编辑软件Multitrack Editor mac中文版主要功能
    Java基础篇 IO流
    本地开发申请ssl证书并在宝塔上给网站配置ssl
    万宾科技管网水位监测助力智慧城市的排水系统
    JavaScript基础语法的简单了解
  • 原文地址:https://blog.csdn.net/liuweizj12/article/details/132724949
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号