【PyTorch深度学习与实践】第五讲用PyTorch实现线性回归

#用PyTorch的工具实现我们的线性模型#

用pytorch实现的一个代码框架

#步骤一(准备数据集)#

1.进行小批量计算的时候会进行一个广播机制,所以我们在准备数据集的时候,需要对数据进行向量化,构造的数据集必须是一个矩阵。

#步骤二(构造计算图)#

1.w和b 的维度得根据x、z、y的维度来确定,比如说已经知道x的维度是4*1,z的维度是3*1,那么根据线性代数的知识可以知道w的维度应该是3*4,b的维度应该是3*1才能与x相乘得到z的维度。

2.先通过正向传播进行计算之后再用backward进行反向传播。

3.loss得出的应该是标量,但是如下图,我们一开始计算得出的loss是一个多维的矩阵,在此我们应该做的就是对求出的多维loss进行求和,然后我们可以自己选择是否对其进行求均值。为什么要求loss是一个标量?因为如果loss是一个向量的话,那么我们是无法再进行backward的

4.在pytorch中的模型

(1)要求掌握编写方式,它是后期所学模型的一个基本代码框架。

class LinearModel(torch.nn.Module)://我们所构造的类都要继承nn.Module这个父类
    def __init__(self):   //构造函数
        super(LinearModel, self).__init__()
        self.linear = torch.nn.Linear(1,1)   //nn.Linear是pytorch里面的一个类,这步是在构造对象,Linear对象包含权重和偏置(w,b),Linear也是继承Module

    def forward(self,x):   //前馈过程所要执行的计算
         y_pred = self.linear(x)
         return y_pred

model = LinearModel()

//在用model构造的对象中,会自动给我们计算backward

(2)  __init__()和forward()两个函数是这个类中的“基本函数”。nn(newrod network)

(3)  Linear类的介绍,一般初始化为(输入列维度,输出列维度,bool型是否要偏置)

(4)forward函数是在覆盖__call__函数,进行实例化,linear(x)实现的是x*w+b,至于是w还是w得转置无所谓。

#步骤三(构造损失函数和优化器)#

critertion传参y和y_head便可以把损失函数求出来。设计图来自于SGD,model.parameters不管模型多复杂都可以找到我们需要计算的参数(比如w),lr是学习率。

#步骤四(训练过程)

注意要把梯度归零,所以要告诉optimizer要把梯度归零。optimizer.step()用来更新。

#测试模型#

#不同的优化器#

#其他扩展#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值