pytorch学习1

前言

在这里插入图片描述
王者之争
在这里插入图片描述
核心之争在于动态图优先还是静态图优先
pytorch是动态计算生成新变量
tf是先定义变量,再生成

回归问题

1、梯度下降算法了解

[梯度算法是深度学习的核心,deep learning求解复杂问题主要靠的是梯度下降算法,故deep learning 近似等于 gradient programing.]

在这里插入图片描述
类似于高中所学的求导问题,求解loss的极小值,loss也可以看作我们熟悉的y,求y的倒数,再检验这个导数是否是我们要求解的极大值/极小值;梯度下降算法不同的是,它有迭代计算的过程。

在这里插入图片描述
迭代得到新的x`等于x减去导数,以x轴坐标2.5为例:
在这里插入图片描述

在x=2.5点处,假设算得导数为-0.9,此时设定学习率即lr为0.005,则:
x`= 2.5 - (-0.9 * lr)

对于lr大小的设置,若lr设置的比较小,就会进行多次迭代,如上图中多的红点即为迭代记录
在这里插入图片描述
最终在x=5位置处导数为0,新的x`= 5 - 0.005 * 0,故得到的结果还是5。
当然,在实际计算中不一定正好达到5的位置,最终结果会接近于5。

在梯度下降计算中还有多种计算器的选择(如下),旨在增加一定的约束条件从而达到更好的计算结果,本质计算过程还是不变。
在这里插入图片描述
其中,最常用的是sgd、rmsprop还有图上没提到的adam。

2、简单回归问题

二元一次方程如下:
在这里插入图片描述
对于初中数学消元法来说,有(1,1.567)和(2,3.043)两组数据代入方程,由式2减去式1,w等于1.477,b约等于0.089。

上述能够精确求解的情况叫作Closed Form Solition。但实际上能够被精确求解的问题并不多,很多数据存在一定的偏差,实际问题往往都是求得一个近似解,在经验上被证明可行即为近似最优解。

在这里插入图片描述
实际数据会存在客观或人为的噪声误差,我们不可能只取两三组数据就求得一个准确的解,这时需要通过若干组数据去求得一个更平均的近似解。

这里并不是要得到y的最小值,而是要求得w和b,使w * x + b最接近于y,则此时梯度下降计算式可列为:
loss = (w * x + b - y)** 2
loss >= 0 ,求解loss的最小值即求得y近似等于w * x + b时,w和b的取值。

在这里插入图片描述
在已知w和b的取值,且有高斯噪声的情况下,x取[0,15],生成100个数据点。

我们假设并不知道各参数值,只通过观察这一百组数据点,判断他们符合线性分布,现在求解w和b的参数,使得求得直线与各点整体的误差最小:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先将w,b都初始化为0, 在每个点处对w和b求导,随着w,b的更新,最终近似解会接近理论值。

实战
在这里插入图片描述
在这里插入图片描述
其中,b`的计算跟w同理。loss将w和b分布当作自变量进行求导。
在这里插入图片描述
循环迭代在这里插入图片描述
上代码:
先生成数据
再定义各计算函数
最终运行程序出结果

import numpy as np
import random
x = np.random.randint(low=5, high=15, size=100)
y = 1.47 * x + 0.089 + np.random.rand()
points = np.stack((x,y),1)
learningRate = 0.001
num = 10000
start_w = 0
start_b = 0def compute_error_for_line_given_points(w, b, points):totalError = 0for i in range(0, len(points)):x = points[i, 0]y = points[i, 1]totalError += ((w * x + b) - y) ** 2return totalError / float(len(points))def step_gradient(w_current, b_current, points, learningRate):w_gradient = 0b_gradient = 0N = float(len(points))for i in range(len(points)):x = points[i, 0]y = points[i, 1]w_gradient += 2/N * x * (w_current * x + b_current - y)b_gradient += 2/N * (w_current * x + b_current - y)w_current -= learningRate * w_gradientb_current -= learningRate * b_gradientreturn w_current, b_currentdef gradient_descent_runner(points, starting_w, starting_b, learningRate, num):w = starting_wb = starting_bfor i in range(num):w, b = step_gradient(w, b, points, learningRate)return w, bif __name__ == '__main__':print('starting gradient descent at w = {0}, b = {1}, error = {2}'.format(start_w, start_b, compute_error_for_line_given_points(start_w, start_b, points)))print("Running...")w, b = gradient_descent_runner(points, start_w, start_b, learningRate, num)print("After {0} iterations, w = {1}, b = {2}, error = {3}".format(num, w, b, compute_error_for_line_given_points(w, b, points))结果:
D:\Anaconda\envs\ai_clone\python.exe D:/pyproject/torch/csdn1.pystarting gradient descent at w = 0, b = 0, error = 250.55349960186973
Running...
After 10000 iterations, w = 1.4856465608314946, b = 0.7776575796016487, error = 0.00216977834414222Process finished with exit code 0

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

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

相关文章

面向面试知识--Lottery项目

面向面试知识–Lottery项目 1.设计模式 为什么需要设计模式? (设计模式是什么?优点有哪些?) 设计模式是一套经过验证的有效的软件开发指导思想/解决方案;提高代码的可重用性和可维护性;提高团…

每日一题:请解释什么是闭包(Closure)?并举一个实际的例子来说明。(前端初级)

今天继续在前端初级笔试题中被AI虐: 碱面的答案,问题:初级,回答:初级https://bs.rongapi.cn/1702510598371151872/14我的回答如下: 闭包是指由大括号包裹的一个区域,这个区域代表了一个变量生效…

SpringMVC之JSON数据返回与异常处理机制---全方面讲解

一,JSON数据返回的理解 在Spring MVC中,当需要将数据以JSON格式返回给客户端时,可以使用ResponseBody注解或RestController注解将Controller方法的返回值直接转化为JSON格式并返回。这使得开发者可以方便地将Java对象转换为JSON,并…

vue基础知识十一:Vue组件之间的通信方式都有哪些?

一、组件间通信的概念 开始之前,我们把组件间通信这个词进行拆分 组件通信 都知道组件是vue最强大的功能之一,vue中每一个.vue我们都可以视之为一个组件通信指的是发送者通过某种媒体以某种格式来传递信息到收信者以达到某个目的。广义上,…

如何用Postman做接口自动化测试

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完…

Vue的路由使用,Node.js下载安装及环境配置教程 (超级详细)

前言&#xff1a; 今天我们来讲解关于Vue的路由使用&#xff0c;Node.js下载安装及环境配置教程 一&#xff0c;Vue的路由使用 首先我们Vue的路由使用&#xff0c;必须要导入官方的依赖的。 BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务https://www.bootcdn.cn/ <…

2023年9月20日

画个钟 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> #include <QPainter> #include <QTimerEvent> #include <QTime> #include <QDateTime> #include <…

Python日期处理库:掌握时间的艺术

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 日期和时间在计算机编程…

【Linux】Ubuntu美化主题【教程】

【Linux】Ubuntu美化主题【教程】 文章目录 【Linux】Ubuntu美化主题【教程】1. 安装优化工具Tweak2.下载自己喜欢的主题3. 下载自己喜欢的iconReference 1. 安装优化工具Tweak 首先安装优化工具Tweak sudo apt-get install gnome-tweak-tool安装完毕后在菜单中打开Tweak 然后…

根据商品ID获得淘宝商品详情, 获得淘宝商品详情高级版,获得淘宝商品评论, 获得淘宝商品快递费用 ,获得淘口令真实,批量获得淘宝商品上下架时间)

参数说明 通用参数说明 参数不要乱传&#xff0c;否则不管成功失败都会扣费url说明 https://api-gw.…….cn/平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京东等&#xff0c; API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_…

蒙特卡洛方法的数学基础-1

蒙特卡洛方法的数学基础-1 概率论 Bayes 公式 常用分布 Binominal Distribution Poisson Distribution Gaussian Distribution Exponential Distribution Uniform Distribution 大数定理 均匀概率分布随机地取N个数xi &#xff0c;函数值之和的算术平均收敛于函数的期望值 …

无涯教程-JavaScript - CSC函数

描述 CSC函数返回以弧度指定的Angular的余割值。 语法 CSC (number)争论 Argument描述Required/OptionalNumberThe angle (in radians) that you want to calculate the cosecant of.Required Notes CSC(n)等于1/SIN(n) 如果Angular为度,则将其乘以PI()/180或使用RADIANS…

zabbix添加监控项及邮件报警

一、zabbix添加监控项 添加主机群组&#xff0c;添加主机&#xff0c;添加监控项 键值参考官方文档&#xff1a;1 Zabbix客户端 添加监控MySQL3306端口的监控项 2.邮件报警 1.软件安装 [rootxingdian ~]# yum install mailx -y 2.邮箱配置 [rootxingdian ~]# vim /etc/mail.…

计算机毕设 opencv python 深度学习垃圾图像分类系统

文章目录 0 前言课题简介一、识别效果二、实现1.数据集2.实现原理和方法3.网络结构 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟…

(并查集) 1971. 寻找图中是否存在路径 ——【Leetcode每日一题】

❓ 1971. 寻找图中是否存在路径 难度&#xff1a;简单 有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 …

年龄大了转嵌入式有机会吗?

年龄大了转嵌入式有机会吗&#xff1f; 首先&#xff0c;说下结论&#xff1a;年龄并不是限制转行嵌入式软件开发的因素&#xff0c;只要具备一定的编程和电子基础知识&#xff0c;认真学习和实践&#xff0c;是可以成为优秀的嵌入式软件开发工程师的。最近很多小伙伴找我&…

共铸智能未来 图为科技加入深圳市人工智能行业协会

人工智能技术的快速发展&#xff0c;为我们带来了许多革命性的创新&#xff0c;深度学习、自然语言处理、计算机 视觉等技术的突破&#xff0c;加速了人工智能的进步&#xff0c;使其能够更好地理解和处理复杂的数据和情境。这 些技术不仅在科学研究中发挥着重要作用&#xff0…

linux-如何用起来ubuntu

1 Oracle VM VirtualBox安装ubuntu20.04虚拟机 【工具】->【新建】 1.1 虚拟电脑名称和系统类型 【名称】&#xff1a;自定义名称即可 【文件夹】&#xff1a;虚拟机文件将要存储的路径 【虚拟光盘】&#xff1a;将要安装的虚拟机iso文件 1.2 自动安装 【用户名】&…

第16篇ESP32 platformio_arduino框架 wifi联网_连接WiFi热点并连接tcp server收发数据进行通讯

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

通过Power Platform自定义D365 CE 业务需求 - 10.使用Power Apps和Dynamics 365的集成

集成在所有项目中都非常重要。您可以使用Microsoft本机应用程序或使用低代码、少代码概念的第三方系统集成Power Apps。在本章中,您将学习如何将本机和第三方应用程序与模型驱动的Power Apps和Dynamics 365应用程序集成。 将Outlook与Power Apps集成 以下部分概述了将Outloo…