【深度学习】Pytorch基础

目录

  • 梯度下降算法(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 和 ycur_x = cur_x - eta*dycur_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.rhkb.cn/news/421447.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业会议室预约管理系统

基于springbootvuemysql实现的企业会议室预约管理系统(源码数据库部署视频) ### 主要技术 SpringBoot、Vue、MySQL ### 系统角色 员工、管理员 ### 系统功能 1)管理员:数据统计(会议室使用统计-柱状图、设备状态统计…

通过IDEA的Maven插件清理maven依赖缓冲

问题 有时候,在IDEA编程的时候,会遇到2个服务都依赖同一个模块,但是,其中有1个服务没有生效,但是,在CLI的maven中检查依赖树,没有任何问题,但是在IDEA中那个服务始终就是没有生效。…

计算语言学(一)基础

概率论的几个概念 熵、互信息 神经网络基础 MLP CNN RNN Seq2Seq LSTM Transformer 语料库与知识库

世界时钟 做外贸的朋友你需要这么一个看时间的工具

有很多人需要经常查看世界各地的时间,以前的办法就是去网上找时间,一个个对一下,这样是比较麻烦的,而且效率也非常低。 其实我们可以非常智能的管理这些时间时钟,让你更直观的,便捷的了解世界各地时间。 …

TESSY创建以及设计一个测试用例

我们以tessy5.1 IDE为例,给大家展示编写一个测试用例的过程。 还不会创建工程的,可以参考以下这篇文章: TESSY创建单元测试或集成测试工程_tessy 集成测试-CSDN博客 接下来我们以这个作为开始状态进行介绍 1、添加源文件 2、添加头文件路径…

Vulnhub-RickdiculouslyEasy靶场(9个flag)

flag1 端口9090有一个flag flag2 13337端口 flag3 使用dirb进行扫描网站的80端口,发现一些敏感文件 访问80端口,没有发现有效信息 访问passwords目录 访问FLAG.txt 再返回访问passwords.html文件 查看页面源代码发现一个密码 flag4 之前扫描到了robo…

一些硬件知识(二十)

单端差动放大器并不是指“单输入单输出”。它的意思是:输入端为差分输入,而输出为单端输出。 低压差线性稳压器(LDO,Low Dropout Regulator)是一种常见的线性稳压器,具有低输入输出电压差的特点&#xff0c…

全视通医院智慧后勤全场景管理+一体化解决方案,让医院管理提质增效

在 “十四五” 时期,公立智慧医院建设正如火如荼地进行着。2021年,国家卫生健康委医政医管局发布《医院智慧管理分级评估标准体系(试行)》,从政策层面给出了推进面向医务人员的“智慧医疗”、面向患者的“智慧服务”、…

线性方程组求解——预处理Preconditioning介绍

为什么需要预处理? 工程中出现的大规模线性方程组往往是病态的, 对数值求解带来很大的困难: ▶ 使得迭代法(比如Krylov 子空间迭代法) 收敛变得非常缓慢 ▶ 对数值解的精度产生很大的影响(在有限精度计算情形下) 对于第一个问题, 当前的有效处理方法是预处理, 预处…

Flutter的升级和降级步骤

升级 1.版本升级 // 升级到指定版本 flutter upgrade 版本号 // 升级到最新版本 flutter upgrade 2. 更新开发配置 启动 Android Studio。 打开 Settings 对话框,查看 SDK Manager。 如果你已经打开了一个项目,请打开 Tools > SDK Manager。 如果…

strtok函数讲解使用

目录 1.头文件 2.strtok函数介绍 3.解释strtok函数 小心&#xff01;VS2022不可直接接触&#xff0c;否则&#xff01;没这个必要&#xff0c;方源面色淡然一把抓住&#xff01;顷刻炼化&#xff01; 1.头文件 strtok函数的使用需要头文件 #include<string.h> 2.strto…

运维工程师需要掌握什么技能?

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 运维工程师作为确保IT基础设施稳定运行的关键角色&#xff0c;需要掌握一系列核心技能。这些技能涵盖了从系统监控到故障排查&#xff0c;从自动化脚本编写到云服…

Linux基本

一、安装 &#xff08;一&#xff09;bios basic input / output system cpu虚拟化技术需要开启 intel amd 不同品牌进入bios快捷键不一样 &#xff08;二&#xff09;vmware 新建 配置硬件 硬盘 建议单个虚拟硬盘文件&#xff0c;比较好管理 r如果有转移的需求&#xff…

Android Studio下载Gradle失败问题解决

问题说明 使用 Android Studio 构建程序报错如下 Could not install Gradle distribution from https://services.gradle.org/distributions/gradle-7.5.1-bin.zip. Reason: java.net.SocketTimeoutException: Connect timed out问题解决 下载对应版本的压缩包 gradle-7.5.1…

【微服务】⭐️华为云obs功能抽取到公共服务,供所有项目使用

目录 &#x1f378;前言 &#x1f37b;一、公共服务搭建 &#x1f37a;二、代码实现 1.工具类编写 2.项目引入使用 &#x1f379;三、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;上次讲了如何本地对接华为云Obs对象存储服务&#xff0c;在本地项目中通过sdk引入调用…

推理与训练,分布式训练

什么是推理training 在人工智能领域&#xff0c;推理是指经过训练的机器学习模型从全新的数据&#xff08;输入&#xff09;中得出结论&#xff08;输出&#xff09;的过程。通俗地讲&#xff0c;推理是模型的实际运行。 什么是训练 inference 在人工智能领域&#xff0c;训…

【JAVA多线程】JDK线程同步工具:Semaphore、CountDownLatch、CyclicBarrier

目录 1.可能会遇到的线程协作场景 2.Semaphore 3.CountDownLatch 4.CyclicBarrier 1.可能会遇到的线程协作场景 在并发编程中&#xff0c;线程除了独自向前运行&#xff0c;还可能相互之间要进行协作&#xff0c;以保证完成最终总的目标。可能会遇到的几种任务之间的协作&…

算法知识点————背包问题【动态规划】【打家劫舍】

万能头文件#include<bits/stdc.h> 01 背包 定义&#xff1a; 物品只能用1次。01对应选还是不选第i个物品 .N个物品、V容量的最大价值。 思路&#xff1a; &#xff08;1&#xff09;f[ i ] [j] 表示前i个物品容量j的最大价值。 &#xff08;2&#xff09;当前背包容量…

中国人民银行:数字人民币交易额已达7万亿元!中俄考虑使用国家数字货币进行双边结算!

近年来&#xff0c;数字货币的迅速发展引起了全球的广泛关注。中国人民银行&#xff08;PBOC&#xff09;近日透露&#xff0c;数字人民币&#xff08;e-CNY&#xff09;的交易额已接近1万亿美元&#xff0c;这标志着中国在数字货币领域的重大进展。同时俄罗斯也表示&#xff0…

file | 某文件夹【解耦合】下的文件查找功能实现及功能单元测试

文件查找工具 概要思路OS模块 --- 学习版os.getcwd()os.path.dirname(os.getcwd())os.path.dirname() 和 os.path.basename() OS模块 — 实战版单元测试解耦合 概要 梳理业务主逻辑&#xff1a; 查看存放被采集JSON数据的文件夹内的文件列表【所有 包含文件夹下的文件夹下的文…