【pytorch深度学习实践】笔记—05.pytorch实现线性回归

简介: 【pytorch深度学习实践】笔记—05.pytorch实现线性回归

问题与解答

1.已经手动实现了线性回归,为什么要用pytorch来实现线性回归?

pytorch提供许多方法,用起来比较方便。使用pytorch之后我们可以把重点放在神经网络的构建上,而不是python的基础语法上。


pytorch实现线性回归的步骤

1.准备数据集

2.设计模型

理解:究竟要采用什么样的模型来求解线性问题

3.构造loss损失函数和optimizer优化器

4.训练模型

前馈计算loss损失,反馈计算梯度gradient,最后更新权重w

5.预测

最初的目的就是为了预测,希望输入一个x后可以预测输出y的值是多少。所以我们将已知的数据作为训练集、自己设计模型、训练数据,得到一个y和x的关系。最终输入一个x,输出y完成预测。


1.准备数据集

import torch
# 自定义数据集
x_data = torch.tensor([[1.0], [2.0], [3.0]])
y_data = torch.tensor([[2.0], [4.0], [6.0]])

2.设计模型

设计模型的含义:就是要建立哪种模型来实现问题的求解。

一般从最简单的线性模型入手,y=wx或者y=wx+b。

class LinearModel(torch.nn.Module):
    def __init__(self):
        # __init__是构造函数
        # super函数继承父类的__init__()方法
        super(LinearModel, self).__init__()
        # torch.nn.Linear(m, n)表示输入的x是m维的,输出的y是n维的
        self.linear = torch.nn.Linear(1, 1)
    def forward(self, x):
        # forward定义前馈需要进行哪些计算
        y_pred = self.linear(x)  # liear()是对y_pred做计算 y_pred=wx+b
        return y_pred
model = LinearModel()  # 实例化类,创建一个线性模型。

【注】torch.nn.Linear(in_features, out_features, bias=True)

文档中标注:Applies a linear transformation to the incoming data:y=Ax+b 。

传参in_features表示输入x的维度,传参out_features表示输出y的维度。


3.定义损失函数和优化器

criterion = torch.nn.MSELoss(size_average=False)  # 定义损失函数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 定义优化器,lr指的学习率=0.01

4.训练

for epoch in range(10):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())
    optimizer.zero_grad()  # 梯度清零
    loss.backward()  # 自动反向传播
    optimizer.step()  # 更新权重
# 最后打印经过训练之后得到的w和b的值
print("w=", model.linear.weight.item())
print("b=", model.linear.bias.item())

5.预测

我们之所以要构建模型,进行训练,最终的目的是为了预测。所以输入任意x的值,调用model类,预测y的值并输出。

x_test = torch.tensor([[4.0]])
y_test = model(x_test)
print('y_pred=', y_test.data.item())
相关文章
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
186 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
275 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
95 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
PyTorch FlexAttention技术实践:基于BlockMask实现因果注意力与变长序列处理
本文介绍了如何使用PyTorch 2.5及以上版本中的FlexAttention和BlockMask功能,实现因果注意力机制与填充输入的处理。通过attention-gym仓库安装相关工具,并详细展示了MultiheadFlexAttention类的实现,包括前向传播函数、因果掩码和填充掩码的生成方法。实验设置部分演示了如何组合这两种掩码并应用于多头注意力模块,最终通过可视化工具验证了实现的正确性。该方法适用于处理变长序列和屏蔽未来信息的任务。
96 17
深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析
在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。
82 7
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
929 1
深度学习环境搭建笔记(一):detectron2安装过程
深度学习在安全事件检测中的应用:守护数字世界的利器
深度学习在安全事件检测中的应用:守护数字世界的利器
84 22
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
226 6
深度学习在流量监控中的革命性应用
深度学习在流量监控中的革命性应用
78 40