【深度学习】Pytorch基础

news2024/9/23 22:09:38

目录

  • 梯度下降算法(Gradient Descent)
    • 代码实现

梯度下降算法(Gradient Descent)

梯度下降算法在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。

求下面函数的极值
y = x s i n ( x ) y=xsin(x) y=xsin(x)
可以发现在当前这个区间范围内这个函数有两个极小值点,如果我们想寻找当前函数在这个区间内的最小值点,那么当然是第二个极小值点更合适一些,可是并不一定能够如我们所愿顺利地找到第二个极小值点,这时候只能够通过多次尝试。
在这里插入图片描述

  • 梯度的概念:梯度就是函数对它的各个自变量求偏导后,由偏导数组成的一个向量。
    接着来看下一个函数
    在这里插入图片描述
    既然算法是“梯度下降法”,所以先求一下这个函数的梯度,当前的函数f(x)的梯度就是他的导数,这很简单
    f ( x ) ′ = 2 x − 2 f(x)' = 2x - 2 f(x)=2x2
    图上小红点的坐标是(6,f(6)),那么可以得到 f ( 6 ) ′ = 10 f(6)'=10 f(6)=10
    现在用导数值的正负来表示方向如果导数的值是正数,那么就代表x轴的正方向。如果导数的值是负数就代表x轴的负方向。那么就会发现知道了这个方向之后也就知道了应该让x往哪个方向变化f(x)的值减小。那么就让 朝着导数告诉我们的方向的反方向变化就好啦。
    在这里插入图片描述
  • 梯度下降法的目标:搜索出来一个能让函数值尽可能小的位置,所以让x朝着红色箭头的方向走。
    代码中有一个eta变量,专业称为“学习率”。使用数学表达式来更新x的过程那就是:
    x ← x − e t a ∗ d f ( x ) d x x \leftarrow x -eta*\frac{df(x)}{dx} xxetadxdf(x)
    意思是让x减去eta乘以函数的导数。其中eta是为了控制x更新的幅度,将eta的值设置小一点,那么每一次的更新的幅度就会小一点。

代码实现

import numpy as np
import matplotlib.pyplot as plt
# 定义 x 的范围
x = np.linspace(-7, 9, 400)  # 从 -7 到 9,总共 400 个点
y = (x - 1)**2 + 1  # 函数 y = (x-1)^2 + 1
# 计算 x = 6 时的 y 值
cur_x = 6
cur_y = (cur_x - 1)**2 + 1
eta = 0.05
iter = 1000
all_x = []# 记录迭代过程中的 x 值
all_y = []# 记录迭代过程中的 y 值
for i in range(iter):
    # 记录迭代过程
    all_x.append(cur_x)
    all_y.append(cur_y)
    # 计算导数
    dy = 2*cur_x - 2
    # 更新 x 和 y
    cur_x = cur_x - eta*dy
    cur_y = (cur_x - 1)**2 + 1
# 绘图
plt.figure(figsize=(10, 6))  # 设置图形大小
plt.plot(x, y, label=r'$y = (x-1)^2 + 1$', color='blue')  # 绘制函数曲线
plt.title('Plot of $y = (x-1)^2 + 1$')  # 图形标题
plt.xlabel('x')  # x 轴标签
plt.ylabel('y')  # y 轴标签
plt.axhline(0, color='black', linewidth=0.5, ls='--')  # 添加 x 轴
plt.axvline(0, color='black', linewidth=0.5, ls='--')  # 添加 y 轴
plt.grid(True)  # 添加网格
plt.legend()  # 添加图例
plt.scatter(np.array(all_x), np.array(all_y), color='red')# 绘制迭代过程
plt.show()  # 显示图形

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[网络]TCP/IP协议 之 网络层IP协议(3)

文章目录 网络层IP协议NAT机制 网络层 网络层主要做的事情: 1.路径规划(路由器选择) 2.地址管理 IP协议 1)4位版本 指定IP协议的版本, 4 > ipv4 , 6 > ipv6 2)4位首部长度 4位bit能表示0-15, 单位也是4字节, 所以IP报头最长60字节, 最短20字节 3)8位服务类型(TOS) ty…

【Qt】Qt界面美化 | 绘画

文章目录 绘画概述绘制API1. 图形(1). 线段(2). 矩形(3). 圆形(4). 绘制文本 2. 工具(1). 画笔(2). 画刷 3. 绘制图片QPainter图片操作 绘图设备(1). QPixmap(2). QImage(3). QPicture 结束语 绘画概述 虽然 Qt 已经内置了很多的控件,但还是有很多时候需要“自定义…

源于AI绘画的爆火,尝试做了一个工具网站

这两天做了一个 网页 Demo,实现了一些 AI 图像处理功能,前端用的是 React,后端用的是 Django 现在 ,Demo 中已经实现的功能有两个: 1,人像分割:从图像中把人物分割出来,用一个透明…

Vue与React的Diff算法

虚拟DOM 定义 虚拟DOM是一种用于在前端开发中模拟真实DOM的技术。它是一种抽象的数据结构(简单来说就是一个Javascript对象),用于描述HTML或XML文档的结构和内容。通过将页面的状态和结构保存在内存中,而不是直接操作真实的DOM&am…

C++·io流

本节主要是了解为主,需要具体使用时可以查看文档。 io流操作指的是对各种流的操作,我们经常使用的cin和cout是对标准流的操作,实际上它还可以对文件流操作。 官网资料:Input/Output - C Reference 流输入和流提取功能的实现中有着…

鸿蒙交互事件开发04——手势事件

1 概 述 手势事件是移动应用开发中最常见的事件之一,鸿蒙提供了一些方法来绑定手势事件。通过给各个组件绑定不同的手势事件,并设计事件的响应方式,当手势识别成功时,ArkUI框架将通过事件回调通知组件手势识别的结果。 …

记录一款人气领先的开源国产 ERP 系统

推荐一款人气领先的国产ERP系统,目前在Gitee上有12.3k star,在github上面也有1.2k 管伊佳ERP(原名华夏ERP)基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前仅支持进销存财务生产功…

2025年第八届计算机图形和虚拟国际会议(ICCGV 2025)即将召开!

2025年第八届计算机图形和虚拟国际会议(ICCGV 2025)将于2025年2月21-23日在中国成都举行。随着信息技术的飞速发展,计算机图形学与虚拟现实技术正以前所未有的速度重塑着我们的认知世界与交互体验。从沉浸式游戏到精准医疗模拟,从…

气压测试实验(用IIC)

I2C: 如果没有I2c这类总线,连接方法可能会如下图: 单片机所有的通讯协议,无非是建立在引脚(高低电平的变换高低电平持续的时间)这二者的组合上,i2c 多了一个clock线,负责为数据传输打节拍。 (i2…

Unity3d中制作触发区域为圆形的按钮

一、常规矩形的Button制作 设置Highlighed Color为绿色。 此时当鼠标在button上方时会显示绿色: 二、圆形Button制作 在Button的Image中选择Source Image为Knob。 程序运行时,鼠标在矩形和圆形之间的区域,button还是会变成绿色。 所以&…

【时时三省】(C语言基础)指针进阶 例题5

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 abcdef是个常量字符串 把首地址a放在了p里面 第一个p 算的是指针变量的大小 它打印就是4或者8 第二个p1 p本来是a的地址 1就是b的地址 是地址就是打印四或者八 …

chapter14-集合——(List-LikedHashSet)——day18

目录 528-LikedHashSet介绍 529-LikedHashSet源码介绍 528-LikedHashSet课堂练习 528-LikedHashSet介绍 529-LikedHashSet源码介绍 528-LikedHashSet课堂练习

【计网】从零开始认识网络socket

优于别人,并不高贵, 真正的高贵应该是优于过去的自己。 --- 海明威 --- 从零开始认识网络socket 1 网络通信流程2 IP地址 VS MAC地址3 网络socket3.1 理解源 IP 地址和目的 IP 地址3.2 传输层的典型代表3.3 网络字节序3.4 socket编程基础 1 网络通信流…

高压直流接触器及使用注意事项

高压直流接触器及使用注意事项 1.概述2.接触器和继电器有什么区别3.节能线圈4.安装位置5.直流继电器线圈抑制6.高压继电器和接触器有哪些应用?7.线圈效率的决定因素是什么?对线圈驱动器有什么要求?8.负载极性对接触器的影响9.触点参数注意事项10.线圈供电要求1.概述 航空接…

基于单片机实现的的多点分布室内环境监测系统

基于STM32单片机为基础设计的一款室内环境监测系统程序源码 程序分为接收端和采集端两部分 接收端与采集端均以STM32单片机作为控制核心,两者通过ZigBee无线通信技术进行连接。接收端主要用于接收数据并将其实时显示以及报警。 采集端主要用于监测室内环境的各类数…

【Python工具】Python 装饰器实现统计函数执行时长

文章目录 1、背景2、轮子 1、背景 业务基本代码堆积完毕了,部分流程需要调优,想着在几个关键执行路径上进行时间记录,类似 SQL 慢日志一样的方法,方便进行性能问题发现。 了解了下,应该是采用装饰器实现是代码侵入最…

林草湿地址、导出echart为word

2.导出 // 导出exportDoc () {this.loading truelet arrRefs [this.$refs.endChart, this.$refs.processChart, this.$refs.officeEndChart]setTimeout(() > {Promise.all(arrRefs.map((canvasDom) > {return this.html2canvasHandle(canvasDom)})).then(res > {let…

如何让潜意识帮你实现你的目标

潜意识的力量是意识的3万倍以上 如果你有一个宏大的目标,怎么借助潜意识实现你的目标呢 比如,我的目标是:帮助100万人颠覆潜意识,实现人生蜕变,并且培养一万名潜意识开发导师 这么宏大的一个目标,怎么让…

B-树底层原理

一、B-树介绍 定义: B-树(B-Tree)是一种自平衡的树形数据结构,广泛应用于数据库和操作系统中。它的设计目标是减少搜索、顺序访问、插入和删除操作中比较次数和移动次数,特别适合于磁盘中数据的存储和检索。 性质&a…

运维团队日志管理策略参考

在运维工作中,日志管理是一项至关重要的任务。有效的日志管理不仅能够帮助运维团队实时监控系统状态、发现潜在问题,还能为故障排查和系统性能优化提供宝贵的数据支持。本文结合运维行业的实际需求,介绍了一套全面的日志管理策略,…