当前位置: 首页 > news >正文

复试 || 就业day05(2024.01.08)项目一

文章目录

  • 前言
  • 代码模拟梯度下降
    • 构建函数与导函数
    • 函数的可视化
    • 求这个方程的最小值(直接求导)
    • 求方程最小值(不令方程导为0)【梯度下降】
      • eta=0.1
      • eta = 0.2
      • eta = 50
      • eta = 0.01
      • 画出eta=0.1时的梯度下降x的变化过程
  • 总结

前言

💫你好,我是辰chen,本文旨在准备考研复试或就业
💫本文内容来自某机构网课,是我为复试准备的第一个项目
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 预置知识详见我的AIoT板块,需掌握 基本Python语法, Numpy, Pandas, Matplotlib

以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:

💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解

代码模拟梯度下降

import numpy as np
import matplotlib.pyplot as plt

构建函数与导函数

f = lambda x : (x - 3.5) ** 2 - 4.5 * x + 10
# 导函数
g = lambda x : 2 * (x - 3.5) - 4.5

函数的可视化

x = np.linspace(0, 11.5, 100)
y = f(x)plt.plot(x, y)
# 画出最小值点(5.75即为最小值点,具体计算即为令导数为0,见下个代码块)
plt.scatter(5.75, f(5.75), color = 'red', s = 30)

在这里插入图片描述

求这个方程的最小值(直接求导)

'''
令导数值 = 0
2 * (x - 3.5) - 4.5 = 0
2 * x = 11.5
x = 5.75
'''

求方程最小值(不令方程导为0)【梯度下降】

eta=0.1

# 给一个步幅,也就是学习率
eta = 0.1 # 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述
可以看到,最终逼近的结果为 5.750373845373813,可以认为是正确解

eta = 0.2

eta 调大之后,可以明显观察到收敛的快了

# 给一个步幅,也就是学习率
eta = 0.2# 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述

eta = 50

当然,eta 的值也不可以设的过大,会造成发散

# 给一个步幅,也就是学习率
eta = 50# 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述
这是一个死循环

eta = 0.01

如果 eta 的值设的比较小,会收敛,但是会很慢

# 给一个步幅,也就是学习率
eta = 0.01# 正解为 x = 5.75, 若我们梯度下降求得的 x = 5.749, 5.7501 ... 亦是正确答案(很接近)
x = np.random.randint(0, 12, size = 1)[0]# 多次 while 循环,每次梯度下降,记录一下上一次的值,规定一个精确度进行比较
# +0.1; +0.2; +1;...都是可以的,是为了让他们在一开始有差异
last_x = x + 0.1# 下面自定义一个精确度
precision = 0.0001
print('-----------------随机的x是:', x)while True:if np.abs(x - last_x) < precision:    # 退出死循环条件:更新时变化甚微break# 更新,梯度下降last_x = xx = x - eta * g(x)print('+++++++++++++++++更新之后的x是:', x)

在这里插入图片描述

画出eta=0.1时的梯度下降x的变化过程

# 多两行下述代码:
# x_ = [x]
#     x_.append(x)eta = 0.1 x = np.random.randint(0, 12, size = 1)[0]last_x = x + 0.1precision = 0.0001
print('-----------------随机的x是:', x)x_ = [x]   # Python中的列表
count = 0  # 记录梯度下降的次数while True:if np.abs(x - last_x) < precision:   breaklast_x = xcount += 1x = x - eta * g(x)x_.append(x)     # 把更新后的 x 加入到 x_ 中print('+++++++++++++++++梯度下降的次数是:', count)# x1 是 Numpy 的数组
x1 = np.linspace(0, 11.5, 100)
y1 = f(x1)
plt.figure(figsize = (12, 9))   # 调整图像大小
plt.plot(x1, y1)# 散点图
x_ = np.array(x_)   # x_ 需要从 Python 列表转为 Numpy 的数组,否则无法绘图
plt.scatter(x_, f(x_), color = 'red', s = 30)

在这里插入图片描述

总结

模拟的时候还发现了 eta 设置的过小算出来的值也是错误的现象,知道了原因后会补在这里

在这里插入图片描述

相关文章:

复试 || 就业day05(2024.01.08)项目一

文章目录 前言代码模拟梯度下降构建函数与导函数函数的可视化求这个方程的最小值&#xff08;直接求导&#xff09;求方程最小值&#xff08;不令方程导为0&#xff09;【梯度下降】eta0.1eta 0.2eta 50eta 0.01画出eta0.1时的梯度下降x的变化过程 总结 前言 &#x1f4ab;你…...

基于商品列表的拖拽排序后端实现

目录 一&#xff1a;实现思路 二&#xff1a;实现步骤 二&#xff1a;实现代码 三&#xff1a;注意点 一&#xff1a;实现思路 后台实现拖拽排序通常需要与前端进行配合&#xff0c;对商品的列表拖拽排序&#xff0c;前端需要告诉后端拖拽的元素和拖动的位置。 这里我们假…...

小游戏实战丨基于PyGame的贪吃蛇小游戏

文章目录 写在前面PyGame贪吃蛇注意事项系列文章写在后面 写在前面 本期内容&#xff1a;基于pygame的贪吃蛇小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700188 实验环境 python3.11及以上pycharmpygame 安装pygame的命令&#xff1a;…...

AOP(面向切面编程)基于XML方式配置

概念解释&#xff1a;&#xff08;理解基本概念方可快速入手&#xff09; 连接点&#xff08;joinpoint&#xff09; 被拦截到的点&#xff0c;因为Spring只支持方法类型的连接点&#xff0c;所以在Spring中连接点指的就是被拦截到的方法。 切入点&#xff08;pointcut&#x…...

多线程的概念

多线程 同时执行多个任务&#xff0c;例如一个人一边听歌&#xff0c;一边跳舞 继承Thread类实现多线程的方式 定义一个MyThread类继承Thread类&#xff0c;重写里面的run方法 package com.itxs.demo01;/*** Classname : MyThread* Description : TODO 自定义线程继承Thread类*…...

DeepPurpose 生物化学深度学习库;蛋白靶点小分子药物对接亲和力预测虚拟筛选

参考: https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/107649770 https://github.com/kexinhuang12345/DeepPurpose ##安装 pip install DeepPurpose rdkitDeepPurpose包括: 数据: 关联TDC库下载,是同一作者开发的 https://blog.csdn.net/weixin_42357472/artic…...

Java实现责任链模式

责任链模式是一种设计模式&#xff0c;用于处理请求的解耦。在责任链模式中&#xff0c;多个对象都有机会处理请求&#xff0c;从而避免了请求发送者和接收者之间的直接依赖关系。每个处理者都可以决定是否处理请求以及将请求传递给下一个处理者。 简介 责任链模式由一条链组…...

rabbitmq延时队列相关配置

确保 RabbitMQ 的延时消息插件已经安装和启用。你可以通过执行以下命令来安装该插件&#xff1a; rabbitmq-plugins enable rabbitmq_delayed_message_exchange 如果提示未安装&#xff0c;以下是安装流程&#xff1a; 查看mq版本&#xff1a; 查看自己使用的 MQ&#xff08;…...

【工具】推荐一个好用的代码画图工具

PlantUML 官网地址&#xff1a;https://plantuml.com/zh/ 跳转 支持各种结构化数据画图支持代码调用jar包生成图片 提供在线画图能力 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 有兴趣可以尝试下 over~~...

Leetcode14-判断句子是否为全字母句(1832)

1、题目 全字母句 指包含英语字母表中每个字母至少一次的句子。 给你一个仅由小写英文字母组成的字符串 sentence &#xff0c;请你判断 sentence 是否为 全字母句 。 如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&am…...

HTTP和TCP代理原理及实现,主要是理解

Web 代理是一种存在于网络中间的实体&#xff0c;提供各式各样的功能。现代网络系统中&#xff0c;Web 代理无处不在。我之前有关 HTTP 的博文中&#xff0c;多次提到了代理对 HTTP 请求及响应的影响。今天这篇文章&#xff0c;我打算谈谈 HTTP 代理本身的一些原理&#xff0c;…...

MySQL中的连接池

数据库的连接池 1 &#xff09;概述 网站连接数据库&#xff0c;为庞大用户的每次请求创建一个连接是不合适的关闭并重新连接的成本是很大的处理方法&#xff1a;设置最大值, 最小值, 设置最多闲置连接&#xff0c;设置等待阻塞 2 &#xff09;示例演示 import threading i…...

css计时器 animation实现计时器延时器

css计时器 animation实现计时器延时器 缺点当切页面导航会休眠不执行 最初需求是一个列表每个项目都有各自的失效时间 然后就想到 计时器延时器轮询等方案 这些方案每一个都要有自己的计时器 感觉不是很好 轮询也占资源 然后突发奇想 css能不能实现 开始想到的是transition测…...

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…...

k8s的yaml文件中的kind类型都有哪些?(清单版本)

在操作kubernetes的过程中&#xff0c;我们接触到的yaml文件中的kind类型有很多。他们代表了kubernetes的不同类型的对象&#xff0c;了解了kind的类型&#xff0c;也就相当于了解了k8s都有哪些类型的对象。 类型清单及概要说明 序号类型简述1Pod一个Kubernetes中最基本的资源…...

Jetpack Room使用

Room使用 回顾 数据库有多张表&#xff0c;一张表只能记录一种Class&#xff0c;Class的具体属性是这个表的列&#xff1b;所有对表的操作都要通过Dao来访问 注解说明&#xff1a; Enity 作用于Class上&#xff0c;表示创建一张表记录该Class&#xff0c;Class内部属性使用…...

HarmonyOS应用开发之ArkTS语言学习记录

1、ArkTS介绍 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者…...

windows 下 mongodb6.0 导入导出json文件

1.运行cmd窗口&#xff0c;进入MongoDB安装路径下的bin文件下&#xff0c;输入以下命令导入数据文件 mongoimport --host 127.0.0.1 --port 27017 --db <数据库名称&#xff0c;根据自个情况> -c <集合名称&#xff0c;自定义> --file <导入文件的路径名> …...

如何给 unplugin-vue-components/vite 写一个简单的 resolver

大部分工作 unplugin-vue-components 都已经处理好了, 我们只需要接收组件名来判断是否是自己的组件, 然后处理对应的导入逻辑。 一共 3 个字段 as 重命名类似 import { componentNameReName } from ‘xxxx’name 组件名 import { componentName } from ‘xxxx’from 导入路径…...

MYSQL篇--索引高频面试题

mysql索引 1什么是索引&#xff1f; 索引说白了就是一种数据结构&#xff0c;可以协助快速查询数据&#xff0c;以及更新数据库表中的数据&#xff0c;更通俗的来说索引其实就是目录&#xff0c;通过对数据建立索引形成目录&#xff0c;便于去查询数据&#xff0c;而mysql索引…...

你的产品过不了EMC测试?很可能是电源接口这3个PCB布局坑没避开

电源接口EMC设计避坑指南&#xff1a;PCB布局中的三个致命细节 当你的产品在EMC测试中屡屡碰壁时&#xff0c;问题往往不在于防护电路设计本身&#xff0c;而是隐藏在PCB布局的细微之处。许多工程师精心设计了符合规范的防护拓扑&#xff0c;却在传导骚扰测试中遭遇滑铁卢。本文…...

泛微OA Ecology 安全补丁管理账号配置与实战

1. 泛微OA Ecology安全补丁管理账号配置详解 第一次接触泛微OA Ecology系统的安全补丁管理功能时&#xff0c;我完全没意识到这个看似简单的配置背后藏着这么多门道。直到有次系统被恶意攻击&#xff0c;才发现默认的管理账号存在安全隐患。今天就带大家彻底搞懂这个关键配置&a…...

OpenClaw调试技巧:nanobot镜像的日志分析与问题定位

OpenClaw调试技巧&#xff1a;nanobot镜像的日志分析与问题定位 1. 为什么需要关注OpenClaw日志 上周我在本地部署nanobot镜像时遇到一个诡异现象&#xff1a;OpenClaw能正常接收飞书消息&#xff0c;但执行自动化任务时总在"思考阶段"卡住。这个问题困扰了我两天&…...

保姆级教程:NLI-DistilRoBERTa快速部署与简单调用指南

保姆级教程&#xff1a;NLI-DistilRoBERTa快速部署与简单调用指南 1. 项目概述与核心能力 NLI-DistilRoBERTa是基于DistilRoBERTa模型的自然语言推理(Natural Language Inference)Web服务&#xff0c;专门用于分析两个句子之间的逻辑关系。这个轻量级模型保留了RoBERTa模型90…...

DeepSeek-OCR-2实战案例:高校教务系统成绩单OCR+学分绩点自动计算

DeepSeek-OCR-2实战案例&#xff1a;高校教务系统成绩单OCR学分绩点自动计算 本文介绍如何利用DeepSeek-OCR-2模型实现高校教务系统成绩单的OCR识别&#xff0c;并结合vLLM推理加速和Gradio前端展示&#xff0c;构建一个完整的成绩单识别与学分绩点自动计算系统。 1. 项目背景与…...

当我谈 Rax 按端拆分代码的时候我谈些什么:代码规范相关

前言在跨端开发领域&#xff0c;Rax 作为一个备受关注的框架&#xff0c;凭借其“一次编写&#xff0c;多端运行”的理念&#xff0c;为开发者带来了巨大的效率提升。然而&#xff0c;随着业务规模的扩大和终端形态的多样化&#xff08;Web、Weex、小程序、Node 等&#xff09;…...

Adafruit DPS310传感器驱动库深度解析与嵌入式实践

1. Adafruit DPS310 压力传感器驱动库深度解析与工程实践 1.1 项目定位与硬件基础 Adafruit DPS310 是一款高精度、低功耗的数字气压/温度传感器&#xff0c;基于 Infineon&#xff08;原 Bosch Sensortec&#xff09;DPS310 芯片设计。该芯片采用 MEMS 技术&#xff0c;集成…...

Thorium浏览器架构深度解析:基于Chromium的极致性能优化实践

Thorium浏览器架构深度解析&#xff1a;基于Chromium的极致性能优化实践 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the…...

借助aibye智能工具高效完善毕业论文任务书范文,整合7大优质平台的AI修改功能提升学术写作质量

工具名称 核心功能 生成速度 适用场景 独特优势 aibiye 论文初稿生成 20-30分钟 全学科通用 自动插入图表公式 aicheck 初稿查重 20-30分钟 急需查重场景 独创降AIGC算法 askpaper 初稿生成 20-30分钟 理工科专业 支持代码片段 秒篇 快速生成 10-15分钟 …...

BotW-Save-Manager终极方案:深度解析《塞尔达传说:旷野之息》跨平台存档迁移技术

BotW-Save-Manager终极方案&#xff1a;深度解析《塞尔达传说&#xff1a;旷野之息》跨平台存档迁移技术 【免费下载链接】BotW-Save-Manager BOTW Save Manager for Switch and Wii U 项目地址: https://gitcode.com/gh_mirrors/bo/BotW-Save-Manager 你是否曾在Wii U上…...