《PyTorch深度学习实践》01.PyTorch实现Linear Regression
《PyTorch深度学习实践》 .PyTorch实现Linear Regression

一、步骤
- Prepare dataset
- Design model using Class
- inherit from nn.Module
- Construct loss and optimizer
- using PyTorch API
- Training cycle
- forward(算损失), backward(梯度设为0,并反向传播算梯度), update(梯度下降更新梯度)
Step1:Prepare dataset

Step2:Design model

继承nn.Module:

至少实现两个函数,_ init _构造函数和forward()前馈函数
backward()会根据我们的计算图自动构建,可以继承Functions(类)来构建自己的计算块(如果我们的计算块不能用现成的构造,我们可以自己写)

我们分别来看这两个函数:

PyTorch的nn.Linear()
是用于设置网络中的全连接层的,其用法和形参说明如下:
in_features指的是输入的二维张量的大小,即输入的[batch_size, size]中的size。
out_features指的是输出的二维张量的大小,即输出的二维张量的形状为[batch_size,output_size],当然,它也代表了该全连接层的神经元个数。
从输入输出的张量的shape角度来理解,相当于一个输入为[batch_size, in_features]的张量变换成了[batch_size, out_features]的输出张量。
我们继续看forward函数:

我们看到,直接在对象后面加()是什么意思呢?
这也是函数和类的一个区别,为了使得类/实例能够像函数一样使用,成为可调用对象,call()魔法方法出现了。
在PyTorch源码的torch/nn/modules/module.py文件中,有一条_ call _语句和一条forward语句,如下:
1 | __call__ : Callable[…, Any] = _call_impl |
在PyTorch中nn.Module类是所有神经网络模块的基类,你的网络也应该继承这个类,需要重载_ init _和forward函数)。
pytorch主要也是按照__call__
, __init__
,forward
三个函数实现网络层之间的架构的。
我们举个例子:
1 | class Foobar: |
Step3:Construct Loss and Optimizer
Step4:Traing Cycle
①
Step5: Test Model

weight是一个矩阵,我们用.item()让它显示这里面的数值。

二、Code

1 | import torch |
- Title: 《PyTorch深度学习实践》01.PyTorch实现Linear Regression
- Author: Nannan
- Created at : 2024-07-11 20:52:41
- Updated at : 2024-09-30 19:15:09
- Link: https://redefine.ohevan.com/2024/07/11/【实践】01.Linear Regression/
- License: This work is licensed under CC BY-NC-SA 4.0.