mseloss pytorch_PyTorch现的一个简单线性回归的样例

线性回归基本概念

线性回归是利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,表达形式为y=wx+e,其中e为误差服从均值为0的正态分布。

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为回归分析。如果回归分析中包含两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

简单来说,线性回归对于输入x和输出y有一个映射f,y=f(x),而f的形式为ax+b,其中a、b为两个可调的参数,训练的时候就是训练a、b这两个参数。

使用PyTorch实现线性回归

下面使用PyTorch做一个详细的解释。首先导入相应的模块包:

import torchfrom torch.nn import Linear, Module, MSELossfrom torch.optim import SGDimport numpy as npimport pandas as pdimport matplotlibimport matplotlib.pyplot as pltimport seaborn as sns

定义一个线性函数,这里使用y=2x+1,这里的2和1对应的就是上述的参数a和b,使用matplotlib可视化这个函数。

165632fa03c84a9b94b1048eb1507f3c

可视化线性函数

我们生成一些随机的点作为训练数据,并使用seaborn将这些数据显示在图上。

97f1eaf4e38b40719a8235a6d9a88681

随机生成训练数据

下面使用PyTorch建立一个线性的模型来对其进行拟合,也就是我们所说的训练过程。由于只有一层线性模型,我们可以直接使用torch.nn模块中的Linear模型。

model = Linear(1, 1)

其中,(1, 1)表示输入输出的特征数量都是1。Linear模型的表达式为y=w·x+b,w代表权重,b代表偏置。损失函数使用均方损失函数:MSELoss。优化器选择最常用的优化方法:梯度下降法SGD,就是每次迭代计算mini-batch的梯度,再对参数进行更新。学习率选择0.01。关于损失函数与梯度下降的相关概念后续会介绍。

critertion = MSELoss()optim = SGD(model.parameters(), lr=0.01)

我们设置训练次数为3000,并准备训练数据x_train和y_train。x_train和y_train的形状为(256, 1),表示mini-batch大小为256,feature为1。

x_train = x.reshape(-1, 1).astype('float32')y_train = y.reshape(-1, 1).astype('float32')

上述代码中的astype('float32')是为了下一步可以直接转换为torch.float类型的数据。现在可以开始训练了。

a63fc2b2bb074e97829a33fbe070fe77

训练

上述代码完成了3000次的训练,为了便于观察,每200次输出一下损失值,可以看到,随着训练次数的增加,损失值在不断减少。

f6d64003bb1b4c338121de7a4921a53a

训练结果

完成训练后,可以通过model.parameters( )获取模型参数。其中,w和b就是我们训练的模型参数。

f0a49882e91d4e61a959e00c41695252

获取训练模型参数

我们期望的是w=2,b=1,而训练结果w=2.011474609375,b=0.9763303995132446已经几乎接近于期望了。

最后我们将模型可视化。

8717312806d94f5295b8ce9911b7bf6b

模型可视化

至此,我们就完成了通过PyTorch实现的一个简单线性回归的样例。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值