当前位置: 首页 > 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;还能加强团队…...

STM32模拟I2C驱动PCF8591避坑指南:为什么你的AD/DA数据总在跳?

STM32模拟I2C驱动PCF8591避坑指南&#xff1a;为什么你的AD/DA数据总在跳&#xff1f; 调试STM32与PCF8591的模拟I2C通信时&#xff0c;AD/DA数据跳动是开发者最常遇到的棘手问题。本文将深入分析数据不稳定的根源&#xff0c;并提供一套完整的解决方案。不同于基础教程&#x…...

Muse:现代化多仓库管理工具,提升开发效率与协作体验

1. 项目概述&#xff1a;一个面向开发者的现代化代码库管理工具最近在和一些团队交流时&#xff0c;发现一个挺普遍的现象&#xff1a;大家手头的项目代码库越来越多&#xff0c;有的是自己维护的开源项目&#xff0c;有的是公司内部的核心业务模块&#xff0c;还有一堆实验性的…...

PCB高级工艺如何降本:盲孔、微孔与HDI设计的成本优化实战

1. 项目概述&#xff1a;当高级PCB技术成为降本利器在硬件研发圈子里待久了&#xff0c;总有一个根深蒂固的印象&#xff1a;但凡沾上“高级”、“高密度”这些词的技术&#xff0c;比如盲孔、埋孔和微孔&#xff0c;那成本肯定是蹭蹭往上涨。我刚开始接触HDI板设计时也是这么想…...

终极Windows安卓应用安装指南:告别模拟器,拥抱轻量级体验

终极Windows安卓应用安装指南&#xff1a;告别模拟器&#xff0c;拥抱轻量级体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重的安卓模拟器&#x…...

别再Ctrl+F GitHub了!Perplexity高级提示词工程(含18个已验证模板),让开源检索进入“所想即所得”时代

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity GitHub资源检索的范式革命 从关键词匹配到语义理解的跃迁 传统 GitHub 搜索依赖精确的仓库名、文件路径或正则表达式&#xff0c;而 Perplexity 引入的 LLM 驱动检索将自然语言查询&#x…...

模型视图(13):【实战】QColumnView构建级联文件浏览器[官翻]

1. QColumnView实战&#xff1a;打造级联文件浏览器 第一次看到QColumnView这个控件时&#xff0c;我正需要开发一个类似macOS Finder的文件管理器。当时尝试了各种方案都不够理想&#xff0c;直到发现Qt这个隐藏的宝藏控件。它用多列联动的形式展示层级数据&#xff0c;特别适…...

在Windows上直接安装Android应用:APK安装器的三大优势与完整使用指南

在Windows上直接安装Android应用&#xff1a;APK安装器的三大优势与完整使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经希望在Windows电脑上直接运…...

暗黑破坏神2存档编辑器完整指南:快速免费修改d2s文件终极方案

暗黑破坏神2存档编辑器完整指南&#xff1a;快速免费修改d2s文件终极方案 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾经在暗黑破坏神2中因为技能点分配错误而懊悔&#xff1f;是否因为刷不到心仪的装备而浪费时间&a…...

ComfyUI-Impact-Pack深度解析:从AI图像模糊到专业级细节增强的完整解决方案

ComfyUI-Impact-Pack深度解析&#xff1a;从AI图像模糊到专业级细节增强的完整解决方案 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. …...

常闭式防火门,关严才是安全门|90% 的火灾隐患源于忽视它

常闭式防火门&#xff0c;关严才是真正的安全门&#xff01;现实里 90% 的消防火灾隐患&#xff0c;都源于常闭式防火门长期敞开、随意封堵、私自固定不关。很多人觉得开门方便通行、搬货省事&#xff0c;却忽略了它的核心作用&#xff1a;防火隔烟、阻隔火势、延缓蔓延、守护疏…...