PyTorch的4分钟教程,手把手教你完成线性回归

PyTorch手写线性回归:从原理到工业级可部署实现 线性回归作为机器学习最基础的监督学习模型,其核心是通过最小化损失函数求解最优参数;深入理解其前向传播、梯度计算与参数更新机制,是掌握深度学习框架底层逻辑的关键起点。PyTorch凭借自动微分、张量计算图和细粒度控制能力,不仅支持标准线性拟合,更能无缝集成量化、异方差建模、在线学习与端到端部署等工业需求。相比sklearn的黑盒封装,PyTorch实现可显式管理shape广播、自定义初始化、学习率调优及GPU/多卡扩展,为后续构建复杂神经网络流水线奠定可微分、可追踪、可复现的工程范式。本文聚焦PyTorch原 阅读详情

大数据文摘出品

编译:洪颖菲、宁静

 

PyTorch深度学习框架库之一,是来自Facebook的开源深度学习平台,提供研究原型到生产部署的无缝衔接。

 

本文旨在介绍PyTorch基础部分,帮助新手在4分钟内实现python PyTorch代码的初步编写。

 

下文出现的所有功能函数,均可以在中文文档中查看具体参数和实现细节,先附上pytorch中文文档链接:

https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/

 

 

coding前的准备

 

需要在电脑上安装Python包,导入一些科学计算包,如:numpy等,最最重要的,别忘记导入PyTorch,下文的运行结果均是在jupyter notebook上得到的,感兴趣的读者可以自行下载Anaconda,里面自带有jupyter notebook。(注:Anaconda支持python多个版本的虚拟编译环境,jupyter notebook是一个web形式的编译界面,将代码分割成一个个的cell,可以实时看到运行结果,使用起来非常方便!)

 

软件的配置和安装部分,网上有很多教程,这里不再赘述,纸上得来终觉浅,绝知此事要躬行。让我们直接进入Pytorch的世界,开始coding吧!

 

 

Tensors

 

Tensor张量类型,是神经网络框架中重要的基础数据类型,可以简单理解为一个包含单个数据类型元素的多维矩阵,tensor之间的通过运算进行连接,从而形成计算图。

 

下面的代码实例中创建了一个2*3的二维张量x,指定数据类型为浮点型(Float):

 
import torch#Tensorsx=torch.FloatTensor([[1,2,3],[4,5,6]])print(x.size(),"\n",x)

 

运行结果:

 

              

PyTorch包含许多关于tensors的数学运算。除此之外,它还提供了许多实用程序,如高效序列化Tensor和其他任意数据类型,以及其他有用的实用程序。

 

下面是Tensor的加法/减法的一个例子,其中torch.ones(*sizes, out=None) → Tensor返回一个全为1 的张量,形状由可变参数sizes定义。在实例中,和变量x相加的是创建的两个相应位置值为1的2*3的张量,相当于x每一维度的值+2,代码和运行结果如下所示:​​​​​​​

#Add tensorsx.add_(torch.ones([2,3])+torch.ones([2,3]))

 

运行结果:

 

       

     

同样的,PyTorch也支持减法操作,实例如下,在上面的运行结果基础上每一维度再减去2,x恢复到最初的值。​​​​​​​

 

#Subtract Tensorx.sub_(torch.ones([2,3])*2)

 

运行结果:

 

             

 

其他PyTorch运算读者可以查阅上文给出的中文链接。

 

 

PyTorch and NumPy

 

用户可以轻松地在PyTorch和NumPy之间来回转换。

 

下面是将np.matrix转换为PyTorch并将维度更改为单个列的简单示例:

​​​​​​​
#Numpy to torch tensorsimport numpy as npy=np.matrix([[2,2],[2,2],[2,2]])z=np.matrix([[2,2],[2,2],[2,2]],dtype="int16")x.short() @ torch.from_numpy(z)

 

运行结果:

 

             

 

其中@为张量乘法的重载运算符,x为2*3的张量,值为[[1,2,3],[4,5,6]],与转换成tensor的z相乘,z的大小是3*2,结果为2*2的张量。(与矩阵乘法类似,不明白运行结果的读者,可以看下矩阵的乘法运算)

 

除此外,PyTorch也支持张量结构的重构reshape,下面是将张量x重构成1*6的一维张量的实例,与numpy中的reshape功能类似。

​​​​​​​

#Reshape tensors(similar to np.reshape)x.view(1,6)

 

运行结果:

 

        

      

GitHub repo概述了PyTorch到numpy的转换,链接如下:

https://github.com/wkentaro/pytorch-for-numpy-users

 

 

CPU and GPUs

 

PyTorch允许变量使用 torch.cuda.device上下文管理器动态更改设备。以下是示例代码:

​​​​​​​

#move variables and copies across computer devicesx=torch.FloatTensor([[1,2,3],[4,5,6]])y=np.matrix([[2,2,2],[2,2,2]],dtype="float32")

if(torch.cuda.is_available()):    x=x.cuda();    y=torch.from_numpy(y).cuda()    z=x+yprint(z)
print(x.cpu())

 

运行结果:

             

 

PyTorch Variables

 

变量只是一个包裹着Tensor的薄层,它支持几乎所有由Tensor定义的API,变量被巧妙地定义为自动编译包的一部分。它提供了实现任意标量值函数自动区分的类和函数。

 

以下是PyTorch变量用法的简单示例,将v1和v2相乘的结果赋值给v3,其中里面的参数requires_grad的属性默认为False,若一个节点requires_grad被设置为True,那么所有依赖它的节点的requires_grad都为True,主要用于梯度的计算。

​​​​​​​

#Variable(part of autograd package)#Variable (graph nodes) are thin wrappers around tensors and have dependency knowle#Variable enable backpropagation of gradients and automatic differentiations#Variable are set a 'volatile' flad during infrencing

from torch.autograd import Variablev1 = Variable(torch.tensor([1.,2.,3.]), requires_grad=False)v2 = Variable(torch.tensor([4.,5.,6.]), requires_grad=True)v3 = v1*v2

v3.data.numpy()

 

运行结果:

 

            

​​​​​​​

#Variables remember what created themv3.grad_fn

 

运行结果:

 

             

 

 

Back Propagation

 

反向传播算法用于计算相对于输入权重和偏差的损失梯度,以在下一次优化迭代中更新权重并最终减少损失,PyTorch在分层定义对于变量的反向方法以执行反向传播方面非常智能。

 

以下是一个简单的反向传播计算方法,以sin(x)为例计算差分:

​​​​​​​

#Backpropagation with example of sin(x)x=Variable(torch.Tensor(np.array([0.,1.,1.5,2.])*np.pi),requires_grad=True)y=torch.sin(x)x.grady.backward(torch.Tensor([1.,1.,1.,1]))

#Check gradient is indeed cox(x)if( (x.grad.data.int().numpy()==torch.cos(x).data.int().numpy()).all() ):    print ("d(sin(x)/dx=cos(x))")


 

 

运行结果:

             

 

对于pytorch中的变量和梯度计算可参考下面这篇文章:

https://zhuanlan.zhihu.com/p/29904755

 

 

SLR: Simple Linear Regression

 

现在我们了解了基础知识,可以开始运用PyTorch 解决简单的机器学习问题——简单线性回归。我们将通过4个简单步骤完成:

 

 

第一步

 

在步骤1中,我们创建一个由方程y = wx + b产生的人工数据集,并注入随机误差。请参阅以下示例:

​​​​​​​
#Simple Liner Regression# Fit a line to the data. Y =w.x+b#Deterministic behaviornp.random.seed(0)torch.manual_seed(0)#Step 1:Datasetw=2;b=3x=np.linspace(0,10,100)y=w*x+b+np.random.randn(100)*2x=x.reshape(-1,1)y=y.reshape(-1,1)

 

第二步

 

在第2步中,我们使用forward函数定义一个简单的类LinearRegressionModel,使用torch.nn.Linear定义构造函数以对输入数据进行线性转换:

​​​​​​​
#Step 2:Modelclass LinearRegressionModel(torch.nn.Module):        def __init__(self,in_dimn,out_dimn):        super(LinearRegressionModel,self).__init__()        self.model=torch.nn.Linear(in_dimn,out_dimn)            def forward(self,x):        y_pred=self.model(x);        return y_pred;    model=LinearRegressionModel(in_dimn=1, out_dimn=1)

 

torch.nn.Linear参考网站:

https://pytorch.org/docs/stable/_modules/torch/nn/modules/linear.html

 

 

第三步

 

下一步:使用 MSELoss 作为代价函数,SGD作为优化器来训练模型。​​​​​​​

 

#Step 3: Trainingcost=torch.nn.MSELoss()optimizer=torch.optim.SGD(model.parameters(),lr=0.01,momentum=0.9)inputs=Variable(torch.from_numpy(x.astype("float32")))outputs=Variable(torch.from_numpy(y.astype("float32")))

for epoch in range(100):#3.1 forward pass:    y_pred=model(inputs)    #3.2 compute loss    loss=cost(y_pred,outputs)    #3.3 backward pass    optimizer.zero_grad();    loss.backward()    optimizer.step()    if((epoch+1)%10==0):        print("epoch{},loss{}".format(epoch+1,loss.data))

 

运行结果:

             

 

MSELoss参考网站:

https://pytorch.org/docs/stable/_modules/torch/nn/modules/loss.html

 

SGD参考网站:

https://pytorch.org/docs/stable/_modules/torch/optim/sgd.html

 

 

第四步

 

现在训练已经完成,让我们直观地检查我们的模型:​​​​​​​

 

#Step 4:Display model and confirmimport matplotlib.pyplot as pltplt.figure(figsize=(4,4))plt.title("Model and Dataset")plt.xlabel("X");plt.ylabel("Y")plt.grid()plt.plot(x,y,"ro",label="DataSet",marker="x",markersize=4)plt.plot(x,model.model.weight.item()*x+model.model.bias.item(),label="Regression Model")plt.legend();plt.show()


 

 

运行结果:

       

       

现在你已经完成了PyTorch的第一个线性回归例子的编程了,对于后续希望百尺竿头,更进一步的读者来说,可以参考PyTorch的官方文档链接,完成大部分的编码应用。

 

相关链接:

https://medium.com/towards-artificial-intelligence/pytorch-in-2-minutes-9e18875990fd

 

PyTorch手写线性回归:从张量计算到可部署模型 线性回归作为机器学习最基础的监督学习方法,其本质是求解超平面法向量的优化问题;核心原理在于通过梯度下降最小化损失函数(如MSE),依赖自动微分(autograd)实现参数更新;技术价值在于提供端到端可调试、可扩展、与深度学习栈无缝衔接的建模范式;典型应用场景包括工业时序趋势建模、嵌入式轻量预测及后续升级为LSTM等复杂模型的过渡阶段;本文聚焦PyTorch原生实现,深入张量形状控制、梯度流动机制与数值稳定性保障,贯穿autograd和梯度下降两大核心热词。 阅读详情

相关推荐

Python-pytorch2c一个用于将PyTorch图形编译为C的Python模块

用于将(静态)PyTorch图形编译为C(依赖于TH和THNN)的Python模块。

2024 最新PyTorch源码编译流程和踩坑记录,PyTorch build from source

2024 最新PyTorch源码编译流程和踩坑记录,PyTorch build from source

qq_36755743的博客 9903

python3.8 编译 pytorch1.9 torch-1.9

pytorch1.9 python3.8 因为编译太过耗时 将编译出的包发出来备份分享

pytorch 源码编译安装

linux pytorch 源码编译

优快云_ten的博客 4888

PyTorch在Windows环境搭建的方法步骤

一、安装Anaconda 3.5 Anaconda是一个用于科学计算的Python发行版,支持Linux、Mac和Window系统,提供了包管理与环境管理的功能,可以很方便地解决Python并存、切换,以及各种第三方包安装的问题。 二、下载和安装 个人建议推荐在清华的镜像来下载。选择合适你的版本下载,我使用的是Anaoonda3-5.1.0-Windows-x86_64.exe 可能安装速度有点慢,不太清楚是我电脑系统盘快慢的原因还是什么。 环境变量配置 将D:\ProgramData\Anaconda3 D:\ProgramData\Anaconda3\Library\bin D

ESP8266+ITR8307实战:如何用反射式光电管实现5cm远距离检测(附避坑指南)

本文详细介绍了如何利用ESP8266的ADC功能与ITR8307反射式光电管,通过调制解调、硬件电路优化及软件同步采样策略,实现5cm稳定远距离检测。文章提供了完整的硬件设计、代码实现与调优避坑指南,有效解决了环境光干扰与信号衰减难题,适用于智能车、自动化等需要可靠非接触检测的项目。

rgv234567的博客 262

pytorch源码编译

下载源代码和依赖库 需要在内部隔离网络中从源码编译pytorch,但内部网络无法链接github。且pytorch依赖库众多,一个一个地下载依赖库不太现实。 我采用的方法是:在外部可联网的机器上git clone pytorch源码,切换到所需的branch或者tag上。使用命令git submodules update --init --recursive下载所有的依赖库。这一步非常耗时,也可能会失败,需要反复执行该命令,直到没有报错了,所有的依赖库才算都下载了。注意一定要加上 --recursive,因

huang_yx005的博客 4717

人工智能,不止于模型:四步实现完整工作流

工程师越来越多地致力于将人工智能 (AI) 集成到自己的项目和应用中,同时不断着力提升自己的 AI 技能。面对 AI 问题,工程师首先要了解什么是 AI,以及如何将它纳入当前工作流,这看似简单,实则未必容易。在 Google 中搜索“什么是 AI?”会得到数百万条结果,包括不同程度的技术和相关信息。那么,对工程师而言,AI 意味着什么?人们对 AI 的关注主要集中在 AI 模型上,受此影响,工程师会迅速投入 AI 建模的研究。

r1832644594的博客 2809

编译 PyTorch 模型

本篇文章译自英文文档。作者是。更多 TVM 中文文档可访问 →。本文介绍了如何用 Relay 部署 PyTorch 模型。首先应安装 PyTorch。此外,还应安装 TorchVision,并将其作为模型合集 (model zoo)。或参考官网:https://pytorch.org/get-started/locally/PyTorch 版本应该和 TorchVision 版本兼容。目前 TVM 支持 PyTorch 1.7 和 1.4,其他版本可能不稳定。

HyperAI超神经 1172

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 519

【MERRA-2数据集】M2I1NXASM (5.12.4) 和 M2I1NXINT (5.12.4)概述

M2I1NXASM (5.12.4) 和 M2I1NXINT (5.12.4)概述

WW、forever的博客 680

mseloss pytorch_PyTorch的4分钟教程,手把手教你完成线性回归

大数据文摘出品编译:洪颖菲、宁静PyTorch深度学习框架库之一,是来自Facebook的开源深度学习平台,提供研究原型到生产部署的无缝衔接。本文旨在介绍PyTorch基础部分,帮助新手在4分钟内实现python PyTorch代码的初步编写。下文出现的所有功能函数,均可以在中文文档中查看具体参数和实现细节,先附上pytorch中文文档链接:https://pytorch-cn.readthedo...

weixin_39620278的博客 200

uniapp - 应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准(uniApp开发安卓APP上架应用市场审核被拒绝驳回,详细解决方案)

uniApp应用软件在运行时,未见向用户告知权限申请的目的,向用户索取(存储、相机、电话)等权限,不符合华为应用市场审核标准。uniapp vue2 vue3解决软件在运行时,未见向用户告知权限申请的目的,华为等上架被拒问题,关于华为应用市场上架需要同步告知使用权限的解决方案,uniApp应用软件在运行时,不符合华为应用市场审核标准。解决方案合集!app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。华为应用市场审核新规(未同步告知权限申请的使用目

🏆 前端领域优质创作者 4163

pytorch线性回归代码_PyTorch的4分钟教程,手把手教你完成线性回归

大数据文摘出品编译:洪颖菲、宁静PyTorch深度学习框架库之一,是来自Facebook的开源深度学习平台,提供研究原型到生产部署的无缝衔接。本文旨在介绍PyTorch基础部分,帮助新手在4分钟内实现python PyTorch代码的初步编写。下文出现的所有功能函数,均可以在中文文档中查看具体参数和实现细节,先附上pytorch中文文档链接:https://pytorch-cn.readthedo...

weixin_39683025的博客 208

QGis 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中...)

QGis 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中...)

279

黑猫带你学UFS协议第8篇:UFS电气特性详解(Power、CLK、Reset等)

UFS强制支持secure mode。UFS设备可能会存储个人或者公司的信息,UFS提供把数据永久从设备上移除的功能,并且保证对存储介质进行逆向恢复数据也恢复不回来原有数据。安全模式是以逻辑单元为单位进行应用的,不同的逻辑单元可以有不同的安全模式。由于UFS设备的存储介质不同,所以把数据安全从存储介质上移除方式会有不同,spec提供了三种通用的移除方法,UFS设备至少支持其中一种。● 对存储的位置进行一次擦除操作。● 对存储的位置使用单一字符(比如0xAA)覆盖写,然后进行擦除。.........

黑猫奥利奥的博客 4075

python cox回归_PyTorch的4分钟教程,手把手教你完成线性回归

大数据文摘出品编译:洪颖菲、宁静PyTorch深度学习框架库之一,是来自Facebook的开源深度学习平台,提供研究原型到生产部署的无缝衔接。本文旨在介绍PyTorch基础部分,帮助新手在4分钟内实现python PyTorch代码的初步编写。下文出现的所有功能函数,均可以在中文文档中查看具体参数和实现细节,先附上pytorch中文文档链接:coding前的准备需要在电脑上安装Python包,导入...

weixin_39946266的博客 823

Codex 桌面端自定义模型列表为空 — 修复记录

摘要:Codex桌面端首次启动正常,但二次启动后出现中文界面且模型列表丢失。问题根源在于Electron的Chromium持久化状态损坏,导致UI渲染异常。解决方案包括:1) 将config.toml中的模型路径改为绝对路径;2) 删除损坏的状态文件.codex-global-state.json;3) 清除Chromium用户数据目录AppData\Roaming\Codex\web。验证显示修改后模型功能恢复正常,重装无效的原因是卸载未清除用户数据目录。

猿小白的博客 1152

从零手写线性回归模型:PyTorch 实现深度学习入门教程

在机器学习的学习过程中,我们接触过线性回归模型,并使用过如 Scikit-learn 这样的工具来快速实现。但在本文中,将深入理解线性回归的核心思想,并使用PyTorch从零开始手动实现一个线性回归模型。数据集的构建;假设函数的定义;损失函数的设计;梯度下降优化方法的实现;模型训练和损失变化的可视化。

吴师兄大模型的博客 1710

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

PyTorch 框架实现线性回归:从数据预处理到模型训练全流程

在之前的文章中,通过手动方式构建了一个简单的线性回归模型。然而,面对复杂的网络设计,手动实现不仅繁琐,还容易出错。为了提高效率和灵活性,可以利用 PyTorch 提供的组件来快速搭建模型。

吴师兄大模型的博客 2858

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

60 分钟入门 PyTorch !这里有一份新手指南

PyTorch是最优秀的深度学习框架之一,它简单优雅,非常适合入门。本文将介绍如何快速学习 PyTorch ,入门深度学习。2017 年初,Facebook 在机器学习和...

实验楼 1106

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

PyTorch的线性回归

PyTorch深度学习框架库之一,是来自Facebook的开源深度学习平台,提供研究原型到生产部署的无缝衔接。 本文旨在介绍PyTorch基础部分,帮助新手在4分钟内实现python PyTorch代码的初步编写。 coding前的准备 需要在电脑上安装Python包,导入一些科学计算包,如:numpy等,最最重要的,别忘记导入PyTorch,下文的运行结果均是在jupyter notebook上...

小坚果的博客 280

线性回归及PyTorch的Linear实现

线性回归

Mark_Australia的博客 601

PyTorch入门教程合集

5整套Pytorch学习资料+一些使用Pytorch的案例

1415
上一篇: 困扰计算机圈近三十年的布尔函数敏感度猜想,被华人数学家2页纸解决了!
下一篇: 5G基站辐射致癌?一个源自19年前的某权威报告引发的谣言
BigDataDigest
博客等级 码龄9年 448粉丝 500原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值