基于Pytorch深度学习——线性回归

本文章来源于对李沐动手深度学习代码以及原理的理解,并且由于李沐老师的代码能力很强,以及视频中讲解代码的部分较少,所以这里将代码进行尽量逐行详细解释
并且由于pytorch的语法有些小伙伴可能并不熟悉,所以我们会采用逐行解释+小实验的方式来给大家解释代码

tips:本文需要下载d2l包,大家可以按照以下指令下载

pip install d2l

导入模块

%matplotlib inline
import random
import torch
from d2l import torch as d2l

这里如果有报错说模块不存在的话,可以自行pip install下载

生成数据集

这一次我们的任务是线性回归,所以为了简单起见,我们根据带有噪声的线性模型构造一个人造数据集。而我们的任务是通过我们生成的人造数据集来恢复这个模型的参数
我们会生成1000个样本的数据集,每个样本包含从标准正太分布中采样的两个特征
y=Xw+b+ϵ y = Xw + b + \epsilony=Xw+b+ϵ
其中ϵ\epsilonϵ表示模型预测和标签时候的潜在误差,也就是我们俗称的噪声,并且满足
ϵ−N(0,0.012) \epsilon- N(0,0.01^2)ϵN(0,0.012)

生成人工数据集

def synthetic_data(w, b, num_examples):  #@save
    """生成y=Xw+b+噪声"""
    X = torch.normal(0, 1, (num_examples, len(w)))
    y = torch.matmul(X, w) + b
    y += torch.normal(0, 0.01, y.shape)
    return X, y.reshape((-1, 1))

对于这一段代码,让我们难以理解的无非就是torch.normaltorch.matmul两个函数了,这两个函数我们会在下面的小实验部分进行讲解,我们暂时跳过这两个函数,我们可以发现这个函数其实主要是为了生成一个人工数据集
并且采用的方式是找到满足满足我们给定w和b的参数,并且添加一个均值为0,标准差为0.01的一个噪声,将噪声和我们原本正确的y进行组合,也就得到了我们的标签

小实验

我们可以针对这两个函数做个小实验

x = torch.normal(0,1,size=(2,3))
x
>>> tensor([[-0.7975, -0.0837,  0.7249],
        [-0.2106, -0.2072, -2.9369]])

我们可以看出torch.normal函数是生成一个均值为0,方差为1,并且size为两行三列的一个tensor数据类型

y = torch.normal(0,1,size=(3,2))
y
>>> tensor([[ 0.1762, -2.0809],
        [ 1.1579, -0.5423],
        [ 0.5573, -0.4598]])

z = torch.matmul(x,y)
z
>>> tensor([[ 0.1665,  
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值