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

Pytorch实现线性回归Linear Regression

借助 PyTorch 实现深度神经网络 - 线性回归 - 第 2 周 | Coursera

线性回归预测

用PyTorch实现线性回归模块

f070f2ec76df43abaf729d5793230134.png

创建自定义模块(内含一个线性回归)

6b99a23f99be443c99f8501dc8f9943f.png

24c6b66fe591473f92115b0246077091.png

训练线性回归模型

对于线性回归,特定类型的噪声是高斯噪声

4dd6e6e710d041118e8c6916ee5ab399.png

平均损失均方误差函数:

ca40bebf938f4d819d5169765b05fe2c.png

loss求解(导数=0):

823863a0a51d49c494927630586adcc1.png

梯度下降

783413bc85ec40649e6c44e137d022e4.png

eq?%5Ceta表示学习率

66a21da7c5ad46f1806059a03f38f82f.png

学习率过高,可能错过参数的最佳值

学习率过低,需要大量的迭代才能获得最小值

Batch Gradient Descent:使用整个训练集来更新模型的参数 

用Pytorch实现线性回归--梯度

493855116b9949559e0ff6ca31455924.png

45f47906ebf14783ac0a1fa75cbc857d.png

0a401308297e4e32bb8b0d351a6617fd.png

9dece871069a4a2891ddbd7478e07e0f.png

每个epoch就是一个iteration:

9802fbe8327d435ba6fb028827a0fcbb.png

画图版:

import torch
w=torch.tensor(-10.0,requires_grad=True)
X=torch.arange(-3,3,0.1).view(-1,1)
f=-3*X
# The class for plottingclass plot_diagram():# Constructordef __init__(self, X, Y, w, stop, go = False):start = w.dataself.error = []self.parameter = []print(type(X.numpy()))self.X = X.numpy()self.Y = Y.numpy()self.parameter_values = torch.arange(start, stop)self.Loss_function = [criterion(forward(X), Y) for w.data in self.parameter_values] w.data = start# Executordef __call__(self, Yhat, w, error, n):self.error.append(error)self.parameter.append(w.data)plt.subplot(212)plt.plot(self.X, Yhat.detach().numpy())plt.plot(self.X, self.Y,'ro')plt.xlabel("A")plt.ylim(-20, 20)plt.subplot(211)plt.title("Data Space (top) Estimated Line (bottom) Iteration " + str(n))# Convert lists to PyTorch tensorsparameter_values_tensor = torch.tensor(self.parameter_values)loss_function_tensor = torch.tensor(self.Loss_function)# Plot using the tensorsplt.plot(parameter_values_tensor.numpy(), loss_function_tensor.numpy())plt.plot(self.parameter, self.error, 'ro')plt.xlabel("B")plt.figure()# Destructordef __del__(self):plt.close('all')
gradient_plot = plot_diagram(X, Y, w, stop = 5)
# Define a function for train the modeldef train_model(iter):LOSS=[]for epoch in range (iter):# make the prediction as we learned in the last labYhat = forward(X)# calculate the iterationloss = criterion(Yhat,Y)# plot the diagram for us to have a better ideagradient_plot(Yhat, w, loss.item(), epoch)# store the loss into listLOSS.append(loss.item())# backward pass: compute gradient of the loss with respect to all the learnable parametersloss.backward()# updata parametersw.data = w.data - lr * w.grad.data# zero the gradients before running the backward passw.grad.data.zero_()
train_model(4)

15c5d775a43646ab97e2989e6726fede.png

cc0cff3af6a34921afbc9b5072d50532.png

9ed27917184b4175858fb2d17e559f1b.png

0e72fbd061894b10bbb3e5e9c1fba34b.png

用Pytorch实现线性回归--训练

与上文类似,只是多加了个b

梯度

c99b3440b11249348eefeba808ee2008.png

0aa14cf6f1714b678471e616405a2022.png

edfd17106a104718a2179867111b28b9.png

画函数图:

# The class for plot the diagramclass plot_error_surfaces(object):# Constructordef __init__(self, w_range, b_range, X, Y, n_samples = 30, go = True):W = np.linspace(-w_range, w_range, n_samples)B = np.linspace(-b_range, b_range, n_samples)w, b = np.meshgrid(W, B)    Z = np.zeros((30,30))count1 = 0self.y = Y.numpy()self.x = X.numpy()for w1, b1 in zip(w, b):count2 = 0for w2, b2 in zip(w1, b1):Z[count1, count2] = np.mean((self.y - w2 * self.x + b2) ** 2)count2 += 1count1 += 1self.Z = Zself.w = wself.b = bself.W = []self.B = []self.LOSS = []self.n = 0if go == True:plt.figure()plt.figure(figsize = (7.5, 5))plt.axes(projection='3d').plot_surface(self.w, self.b, self.Z, rstride = 1, cstride = 1,cmap = 'viridis', edgecolor = 'none')plt.title('Cost/Total Loss Surface')plt.xlabel('w')plt.ylabel('b')plt.show()plt.figure()plt.title('Cost/Total Loss Surface Contour')plt.xlabel('w')plt.ylabel('b')plt.contour(self.w, self.b, self.Z)plt.show()# Setterdef set_para_loss(self, W, B, loss):self.n = self.n + 1self.W.append(W)self.B.append(B)self.LOSS.append(loss)# Plot diagramdef final_plot(self): ax = plt.axes(projection = '3d')ax.plot_wireframe(self.w, self.b, self.Z)ax.scatter(self.W,self.B, self.LOSS, c = 'r', marker = 'x', s = 200, alpha = 1)plt.figure()plt.contour(self.w,self.b, self.Z)plt.scatter(self.W, self.B, c = 'r', marker = 'x')plt.xlabel('w')plt.ylabel('b')plt.show()# Plot diagramdef plot_ps(self):plt.subplot(121)plt.ylimplt.plot(self.x, self.y, 'ro', label="training points")plt.plot(self.x, self.W[-1] * self.x + self.B[-1], label = "estimated line")plt.xlabel('x')plt.ylabel('y')plt.ylim((-10, 15))plt.title('Data Space Iteration: ' + str(self.n))plt.subplot(122)plt.contour(self.w, self.b, self.Z)plt.scatter(self.W, self.B, c = 'r', marker = 'x')plt.title('Total Loss Surface Contour Iteration' + str(self.n))plt.xlabel('w')plt.ylabel('b')plt.show()

相关文章:

Pytorch实现线性回归Linear Regression

借助 PyTorch 实现深度神经网络 - 线性回归 - 第 2 周 | Coursera 线性回归预测 用PyTorch实现线性回归模块 创建自定义模块(内含一个线性回归) 训练线性回归模型 对于线性回归,特定类型的噪声是高斯噪声 平均损失均方误差函数&#xff1a…...

十八次(虚拟主机与vue项目、samba磁盘映射、nfs共享)

1、虚拟主机搭建环境准备 将原有的nginx.conf文件备份 [rootserver ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak[rootserver ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf[rootserver ~]# grep -Ev "#|^$"…...

P1340 兽径管理 题解|最小生成树

题目大意 洛谷中链接 推荐文章:并查集入门 原文 约翰农场的牛群希望能够在 N N N 个草地之间任意移动。草地的编号由 1 1 1 到 N N N。草地之间有树林隔开。牛群希望能够选择草地间的路径,使牛群能够从任一 片草地移动到任一片其它草地。 牛群可在…...

Python,Maskrcnn训练,cannot import name ‘saving‘ from ‘keras.engine‘ ,等问题集合

Python版本3.9&#xff0c;tensorflow2.11.0&#xff0c;keras2.11.0 问题一、module keras.engine has no attribute Layer Traceback (most recent call last):File "C:\Users\Administrator\Desktop\20240801\代码\test.py", line 16, in <module>from mrc…...

Linux常用工具

文章目录 tar打包命令详解unzip命令&#xff1a;解压zip文件vim操作详解netstat详解df命令详解ps命令详解find命令详解 tar打包命令详解 tar命令做打包操作 当 tar 命令用于打包操作时&#xff0c;该命令的基本格式为&#xff1a; tar [选项] 源文件或目录此命令常用的选项及…...

AI未来的发展如何

AI&#xff08;人工智能&#xff09;的发展前景非常广阔&#xff0c;随着技术的不断进步和应用场景的不断拓展&#xff0c;AI将在多个领域发挥重要作用。以下是对AI发展前景的详细分析&#xff1a; 一、技术突破与创新 生成式AI的兴起&#xff1a;以ChatGPT为代表的生成式AI技…...

若依替换首页上的logo

...

sed的使用示例

场景:使用sed将多个空格变成单空格,再使用cut来切分得到需要的结果 得到后面这个文件名: ls ./ drwxr-x— 2 root root 6 Jul 18 9:00 7b40f1412d83c1524af7977593607f15 drwxr-x— 2 root root 6 Jul 18 14:00 50af29cef2c65a9d28905a3ce831bcb7 drwxr-x— 2 root root 6 Jul…...

学历不是障碍:大专生如何成功进入软件测试行业

摘要&#xff1a; 在当今技术驱动的职场环境中&#xff0c;软件测试已成为一个关键的职业领域。尽管许多人认为高学历是进入这一行业的先决条件&#xff0c;但实际上&#xff0c;大专学历的学生同样有机会在软件测试领域取得成功。本文将探讨大专生如何通过技能提升、实践经验和…...

文件解析漏洞—IIS解析漏洞—IIS6.X

目录 方式 1&#xff1a;目录解析 方式 2&#xff1a;畸形文件解析 方式 3&#xff1a;PUT 上传漏洞&#xff08;123.asp;.jpg 解析成 asp&#xff09; 环境&#xff1a;Windows server 2003 添加 IIS 管理工具——打开 IIS——添加网站 创建完成之后&#xff0c;右击创建的…...

Sqlmap中文使用手册 - Brute force模块参数使用

目录 1. Brute force模块的帮助文档2. 各个参数的介绍2.1 --common-tables2.2 --common-columns2.3 --common-files 1. Brute force模块的帮助文档 Brute force:These options can be used to run brute force checks--common-tables Check existence of common tables--c…...

ubuntu20.04 开源鸿蒙源码编译配置

替换华为源 sudo sed -i "shttp://.*archive.ubuntu.comhttp://repo.huaweicloud.comg" /etc/apt/sources.list && sudo sed -i "shttp://.*security.ubuntu.comhttp://repo.huaweicloud.comg" /etc/apt/sources.list 安装依赖工具 如果是ubun…...

程序员面试 “八股文”在实际工作中是助力、阻力还是空谈?

“八股文”在实际工作中是助力、阻力还是空谈&#xff1f; 作为现在各类大中小企业面试程序员时的必问内容&#xff0c;“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢&#xff1f;有IT人士不禁发出疑问&#xff1a;程序员面试考…...

广告从用户点击开始到最终扣费的过程

用户点击广告 用户在网页或移动应用上看到广告&#xff0c;并点击广告。这一事件触发了整个广告处理流程。 广告请求触发 用户点击广告后&#xff0c;客户端&#xff08;如浏览器、APP&#xff09;向广告系统发送广告点击请求。请求通常包含以下信息&#xff1a; 用户ID 设备信…...

Linux系统编程-信号进程间通信

目录 异步&#xff08;Asynchronous&#xff09; 信号 数据结构 1.kill 2.alarm 3.pause 4.setitimer 5.abort 信号集(sigset_t类型) 1.sigemptyset 2.sigfillset 3.sigaddset 4.sigdelset 5.sigismember 信号屏蔽 1.sigprocmask 2.sigpending 3.sigsus…...

Attention Module (SAM)是什么?

SAM&#xff08;Spatial Attention Module&#xff0c;空间注意力模块&#xff09;是一种在神经网络中应用的注意力机制&#xff0c;特别是在处理图像数据时&#xff0c;它能够帮助模型更好地关注输入数据中不同空间位置的重要性。以下是关于SAM的详细解释&#xff1a; 1. 基本…...

【C语言】堆排序

堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1. 建堆 升序&#xff1a;建大堆 降序&#xff1a;建小堆 原因分析&#xff1a; 若升序建小堆时间复杂度是O(N^2) 升序建大堆&#xff0c;时间复杂度O&#xff08;N*logN&#xff09; 所以升序建大堆…...

ntp服务重启报错Failed to restart ntpd.service: Unit is masked.

问题概述&#xff1a; 重启ntp服务报错Failed to restart ntpd.service: Unit is masked&#xff0c;使用systemctl unmask ntpd.service命令关闭屏蔽还是报错Failed to restart ntpd.service: Unit is masked 解决方法&#xff1a; 重装ntp服务 yum remove ntpyum install…...

面试题-每日5到

16.Files的常用方法都有哪些&#xff1f; Files.exists():检测文件路径是否存在 Files.createFile():创建文件 Files.createDirectory():创建文件夹 Files.delete():删除一个文件或目录 Files.copy():复制文件 Files.move():移动文件 Files.size():查看文件个数 Files.read():读…...

代码美学大师:打造Perl中的个性化代码格式化工具

代码美学大师&#xff1a;打造Perl中的个性化代码格式化工具 在软件开发过程中&#xff0c;代码的可读性至关重要。Perl&#xff0c;作为一种灵活的脚本语言&#xff0c;允许开发者以多种方式实现代码格式化。自定义代码格式化工具不仅能提升代码质量&#xff0c;还能加强团队…...

成为一名月薪 2 万的 web 安全工程师需要掌握哪些技能?

现在 web 安全工程师比较火&#xff0c;岗位比较稀缺&#xff0c;现在除了一些大公司对学历要求严格&#xff0c;其余公司看中的大部分是能力。 有个亲戚的儿子已经工作 2 年了……当初也是因为其他的行业要求比较高&#xff0c;所以才选择的 web 安全方向。 资料免费分享给你…...

Linux中如何添加磁盘分区

在Linux中添加分区通常涉及到几个步骤&#xff0c;包括识别磁盘、创建分区、格式化分区&#xff0c;以及挂载或将其用作特定的文件系统类型&#xff08;如LVM、RAID等&#xff09;。以下是一个基本的步骤指南&#xff0c;假设你正在使用命令行界面&#xff08;CLI&#xff09;和…...

计算机毕业设计Hadoop+Hive专利分析可视化 面向专利的大数据管理系统 专利爬虫 专利数据分析 大数据毕业设计 Spark

《Hadoop专利大数据分析可视化系统》开题报告 一、选题背景与意义 随着信息技术的飞速发展&#xff0c;全球数据量呈现爆炸式增长&#xff0c;特别是在专利领域&#xff0c;数据的积累和更新速度更是惊人。专利数据不仅包含了技术创新的详细信息&#xff0c;还反映了行业的发…...

git是什么?git和svn的区别。git的一些命令

Git是什么 Git是一个开源的分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称DVCS&#xff09;&#xff0c;它可以有效、高速地处理从很小到非常大的项目版本管理。版本控制系统能追踪项目从开始到结束的整个过程&#xff0c;对编程人员而言…...

RK3568平台(触摸篇)双屏异触调试

一.现象 现象&#xff1a;准备两块主屏都接触摸框&#xff0c;A屏的HDMIOUT外接B屏的HDMIIN&#xff0c;用手触摸A屏&#xff0c;发现A屏没有触摸&#xff0c;A屏幕的触摸现象在B屏那边。 现要求&#xff1a;用手触摸A屏&#xff0c;A屏要有现象&#xff0c;不能现象在B屏那边…...

angular cmd

npm uninstall -g angular/cli npm install -g angular/cli npm install -g angular/cli17 ng update angular/core17 angular/cli17 # 安装 typescript npm i -g typescript5.3.2 # 安装 Angular CLI npm install -g angular/cli17.3.8 # 或者 cnpm install -g angular/cli…...

[ACTF2020 新生赛]BackupFile1

打开题目 利用disearch扫描&#xff0c;发现源文件index.php.bak 下载下来 打开文件 代码审计&#xff0c;翻译一下 翻译代码为&#xff1a; <?php include_once "flag.php"; //这一行使用 include_once 函数来包含&#xff08;或插入&#xff09;另一个 PHP …...

Springboot学习-day16

Springboot学习-day16 Springboot是spring家族中的一个全新框架&#xff0c;用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候&#xff0c;我们需要配置web.xml&#xff0c;spring配置&#xff0c;mybatis配置&#xff0c;然后整…...

Map 31

...

dfs,CF 196B - Infinite Maze

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 https://codeforces.com/problemset/problem/196/B 二、解题报告 1、思路分析 考虑如何判断一条路径可以无限走&#xff1f; 我们对朴素的网格dfs改进&#xff0c;改进为可以dfs网格外的区域 如果存在某个…...

群晖wordpress 外网很慢/网络广告投放渠道有哪些

很多朋友都有购买平板电脑&#xff0c;有的朋友不想使用原版的系统&#xff0c;想要把平板刷成Windows系统&#xff0c;那么应该如何操作呢&#xff1f;平板电脑刷windows的方法是什么呢&#xff1f;小编这就为大家带来如何把平板刷windows图文步骤。如何把平板刷windows图文步…...

企业怎么做网站/营销型网站建设模板

本篇博客主要实现一个自定义的二级联动&#xff0c;说到二级联动举一个简单的例子就理解了二级联动的意思。比如我们网购添加收货地址的时候&#xff0c;我们首先选择省份&#xff0c;然后选择对应省份里的市&#xff0c;我们选择了陕西省&#xff0c;选择市的时候&#xff0c;…...

跟网站开发公司签合同主要要点/网站维护费一年多少钱

一、下载mysql压缩包文件。下载地址&#xff1a;http://dev.mysql.com/downloads/mysql/二、压缩包解压安装。可以安装在任意一个系统盘&#xff0c;解压到D盘目录结构&#xff1a;D:\mysql\mysql-5.6.33-winx64。1、配置my.ini文件。在D:\mysql\mysql-5.6.33-winx64\(注意这个…...

班级网站 模板/优化推广网站怎么做

什么是client/server模式&#xff1f;Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。 它是软件系统体系结构&#xff0c;通过它可以充分利用两端硬件环境的优势&#xff0c;将任务合理分配到Client端和Server端来实现&#xff0c;降低了系统的通讯开销。 目前大多…...

五道口网站建设/品牌公关公司

在做混合开发时发现&#xff0c;无论是APP内的字体大小&#xff0c;还是前端的字体大小&#xff0c;都会随着系统字体大小发生变化。当遇到老人字体&#xff08;特大号字体&#xff09;时&#xff0c;有些页面的布局就乱掉了。而玩过游戏的都知道&#xff0c;所有游戏APP的字体…...

如何做网站url优化/外贸网站优化推广

第二天 暂时先把显示搞出来了&#xff0c;虽然是测试例子&#xff0c;但是改一改代码应该可以显示调试结果&#xff0c;所以先放着&#xff0c;搞一搞模型移植吧。 目标&#xff1a;移植自己训练的Resnet18-SSD的模型到3559上 1、按照文档配置SDK环境 我觉得文档太长&#x…...