pytorch深度学习:用pytorch实现线性回归(代码片段)

嘿化小学生578 嘿化小学生578     2023-01-19     132

关键词:

课程来源:Bilibili 刘二大人《用PyTorch实现线性回归

代码大致思路:

铺垫:

  • 创建数据集、构建计算模型

  • 定义损失函数和优化方式

训练:

  • 通过forward函数进行前馈
  • loss记录损失值
  • 清除上一次的梯度值
  • 反向传播并记录梯度值grad
  • 借助梯度值更新权重
  • 循环上述过程

测试:

  • 检测最终权重值是否符合预期

笔记

  • 数据集为矩阵,3行1列,行数为样本个数,列数为该样本特征值数量
  • __call__函数可以实现类对象的函数化,使对象可加直接()调用__call__函数的函数体。

如代码中的:

y_pred = self.linear(x)  # 生成预测y值
y_pred = model(x_data)  # 调用forward函数
  • 在PyTorch在nn.Module类中实现了__call__方法,并在__call__方法中调用了forward函数,因此在新建的模型中必须重写forward函数。
  • 由于是loss.backward()函数执行之后,grad值才开始更新,所以其应该写在optimizer.zero_grad()函数之后。
  • torch中的其他优化器torch.optim.Adagradtorch.optim.Adam、torch.optim.Adamax、torch.optim.ASGD、torch.optim.LBFGS、torch.optim.RMSprop、torch.optim.Rprop、torch.optim.SGD...
  • (补充)定义函数时参数用*args或**kwargs含义:*args指传参过程中个数可变的位置形参,所有参数用名为args的元组接受。**kwargs指传参过程中个数可变的关键字形参,所有参数用名为kwargs的字典接受。

例子:

def function1(a, b, c, x = 4, y = 5)
    pass

function1(1, 2, 3, x = 4, y = 5)  # 正常调用

def function2(*args, **kwargs)  #使用不定长参数
    print(args)
    print(kwargs)

function2(1, 2, 3, x = 4, y = 5)  # 调用并输出

输出结果:

 

完整代码:

import torch

x_data = torch.Tensor([[1.], [2.], [3.]])  # 建立数据集 3 x 1 矩阵数据集实现mini-batch
y_data = torch.Tensor([[2.], [4.], [6.]])


class LinearModel(torch.nn.Module):  # 继承自Module,类中必须包含__init__和forward函数
    def __init__(self):
        super().__init__()  # Don't care about it,just do it
        self.linear = torch.nn.Linear(1, 1)  # 包含两个权重的对象w和b,(1, 1)即对权重的赋初值

    def forward(self, x):
        y_pred = self.linear(x)  # 生成预测y值
        return y_pred


model = LinearModel()  # 实例化模型

criterion = torch.nn.MSELoss(size_average=False)  # 损失函数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 更新权重

for epoch in range(1000):  # 开始训练
    y_pred = model(x_data)  # 调用forward函数
    loss = criterion(y_pred, y_data)  #记录loss损失值
    print(epoch, loss.item())

    optimizer.zero_grad()  # 清除上一次的梯度值
    loss.backward()  # 开始反向传播并写入梯度值
    optimizer.step()  # 通过梯度值对权重进行更新

print("w = ", model.linear.weight.item())
print("b = ", model.linear.bias.item())

x_test = torch.Tensor([4.])
y_test = model(x_test)  # 测试:用训练完成的权重进行预测
print("y_pred = ", y_test.data.item())

《动手学深度学习》线性回归的简洁实现(linear-regression-pytorch)(代码片段)

线性回归的简洁实现(linear-regression-pytorch)1.生成数据集2.读取数据3.定义模型4.初始化模型参数5.定义损失函数6.定义优化算法7.训练模型8.小结随着深度学习框架的发展,开发深度学习应用变得越来越便利。实践中... 查看详情

[深度学习][pytorch]pytorch实现一个简单得线性回归模型并训练

一个典型的神经网络的训练过程如下:定义具有学习参数(或权重)的神经网络迭代输入数据集根据神经网络对输入数据集进行运算计算损失(输出与真实结果的距离,损失越小说明模型越准确)将梯度反... 查看详情

神经网络和深度学习-用pytorch实现线性回归(代码片段)

用pytorch实现线性回归用pytorch的工具包来实现线性模型的训练过程准备数据集设计模型构造损失函数和优化器(使用pytorchAPI)训练过程:前馈、反馈、更新准备数据在PyTorch中,计算图是小批处理的,所以X和Y... 查看详情

《动手学深度学习》线性回归(pytorch版)

线性回归(PyTorch版)1.线性回归1.1线性回归的基本要素1.1.1模型定义1.1.2模型训练(1)训练数据(2)损失函数(3)优化算法1.1.3模型预测1.2线性回归的表示方法1.2.1神经网络图1.2.2矢量计算表达式小结1.线性回归线性回归输出是一... 查看详情

pytorch学习1b站刘二大人《pytorch深度学习实践》——线性模型(linearmodel)(代码片段)

b站课程链接:线性模型1.基本思想:给出了一组一维数据,定义了一个简单的线性拟合函数,通过穷举法来列出一些权重(拟合函数的系数),并计算这些权重对应的拟合损失函数(使用均方误差&#... 查看详情

深度学习理论与实战pytorch实现

课程目录:01.预备内容(入门)02.Python基础(入门)03.PyTorch基础(入门)04.神经网络(进阶)05.卷积神经网络(进阶)06.循环神经网络(进阶)07.生成对抗网络GAN(进阶)08.强化学习(进阶)09.毕业项目 下载地址:深度学习理... 查看详情

ai人工智能机器学习深度学习学习路径及推荐书籍

要学习Pytorch,需要掌握以下基本知识:编程语言:Pytorch使用Python作为主要编程语言,因此需要熟悉Python编程语言。线性代数和微积分:Pytorch主要用于深度学习领域,深度学习是基于线性代数和微积分的,因此需要具备线性代数... 查看详情

神经网络与深度学习作业3:分别使用numpy和pytorch实现fnn例题(代码片段)

...——了解BP原理 数值计算 代码实现 使用numpy实现 使用pytorch实现 1、对比【numpy】和【pytorch】程序,总结并陈述。2、激活函数Sigmoid用PyTorch自带函数torch.sigmoid(),观察、总结并陈述。3、激活函数Sigmoid改变为Relu,... 查看详情

《pytorch深度学习实践》介绍

...bsp;     本文为bilibili刘二大人所讲的《PyTorch深度学习实践》学习笔记介绍。       笔记融入了自己对课程和代码的理解,希望对大家有所帮助,由于本人知识尚浅,如果笔记中有任何... 查看详情

深度学习-pytorch张量tensor详解(线性回归实战)(代码片段)

...一下给大家。点击跳转到网站。张量(tensor)是Pytorch中最基本的操作对象,表示一个多维矩阵,类似numpy中的ndarrays,是可以在GPU上使用以加速运算。创建直接创建张量 查看详情

[九]深度学习pytorch-transforms图像增强(剪裁翻转旋转)(代码片段)

0.往期内容[一]深度学习Pytorch-张量定义与张量创建[二]深度学习Pytorch-张量的操作:拼接、切分、索引和变换[三]深度学习Pytorch-张量数学运算[四]深度学习Pytorch-线性回归[五]深度学习Pytorch-计算图与动态图机制[六]深度学习Pyto... 查看详情

使用pytorch实现深度学习的主要流程(代码片段)

一、使用Pytorch实现深度学习的主要流程使用Pytorch进行深度学习的实现流程主要包含如下几个部分:1、预处理、后处理并确认网络的输入和输出2、创建Dataset3、创建DataLoader4、创建网络模型5、定义正向传播函数(forward... 查看详情

深度学习6.多层感知机及pytorch实现

深度学习6.多层感知机及PyTorch实现​​一、概念​​​​1.MLP​​​​2.前向传播​​​​3.反向传播​​​​4.评估模式与训练模式​​​​二、模型定义​​​​1.加载数据集​​​​2.定义MLP层​​​​3.前向传播​​​​4.... 查看详情

pytorch学习2b站刘二大人《pytorch深度学习实践》——梯度下降算法(gradientdescent)(代码片段)

b站课程链接:梯度下降算法一、梯度下降算法1.简介梯度下降算法是一种求解函数最优值的迭代算法,给定一个初值,通过负梯度方向进行更新查找。2.程序实现及结果importmatplotlib.pyplotasplt#训练集x_data=[1.0,2.0,3.0]y_... 查看详情

搞定《动手学深度学习》-(李牧)pytorch版本的所有内容

目录目录简介阅读指南1.深度学习简介2.预备知识3.深度学习基础4.深度学习计算5.卷积神经网络6.循环神经网络7.优化算法8.计算性能9.计算机视觉10.自然语言处理环境参考(大家可以在这里下载代码)原书地址(大家可... 查看详情

pytorch深度学习-02线性模型(快速入门)(代码片段)

...ampleSupposethatstudentswouldgetypointsinfinalexam,iftheyspendxhoursinpaperPyTorchTutorial.ThequestioniswhatwouldbethegradeifIstudy4hours?2.1Analyse把数据集分为两部分:一部分用于训练,一部分用于测试模型性能会出现的问题:Overfitting(过拟合):... 查看详情

深度学习100例|第41天:语音识别-pytorch实现(代码片段)

...环境配置教程:小白入门深度学习|第四篇:配置PyTorch环境👉往期精彩内容深度学习100例|第1例:猫狗识别-PyTorch实现深度学习100例|第2例:人脸表情识别-PyTorch实现深度学习100例|第3天:交通标志识别-PyTorch... 查看详情

对比学习:《深度学习之pytorch》《pytorch深度学习实战》+代码

PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉、自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的AllenNLP,用于概率图模型的Pyro,扩展了PyTorch的功能。通... 查看详情