深度学习——用PyTorch实现线性回归(B站刘二大人P5学习笔记)

《PyTorch深度学习实践》B站视频学习笔记 其中in_features和out_features都是指单个样本的维度。是否求均值在每个batch数量都一样时对结果没有影响。torch.optim.SGD()中需要传入的params(参数)是指需要更新的参数,model.parameters()是将模型中所有的参数都取出来。 阅读详情

构造一个简单神经网络(线性model)的步骤:

  • 构建数据集
x_data = torch.Tensor([[1.0] ,[2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])

  • 设计模型

把模型定义成一个类,代码模板(以后写模型都可以参考这个模板):

import torch


class LinearModel(torch.nn.Module):
    # 构造函数:初始化对象默认调用的函数
    def __init__(self):
        # 必写
        super(LinearModel, self).__init__()
        # 构造对象
        self.linear = torch.nn.Linear(1, 1)

    # 前馈任务所要进行的计算
    def forward(self, x):
        y_pred = self.linear(x)
        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(100):
    # 计算y hat
    y_pred = model(x_data)
    # 计算损失
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())

    # 所有权重每次都梯度清零
    optimizer.zero_grad()
    # 反向传播求梯度
    loss.backward()
    # 更新,step()更新函数
    optimizer.step()

 完整代码如下:

import torch

x_data = torch.Tensor([[1.0] ,[2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])


class LinearModel(torch.nn.Module):
    # 构造函数:初始化对象默认调用的函数
    def __init__(self):
        # 必写
        super(LinearModel, self).__init__()
        # 构造对象
        self.linear = torch.nn.Linear(1, 1)

    # 前馈任务所要进行的计算
    def forward(self, x):
        y_pred = self.linear(x)
        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(100):
    # 计算y hat
    y_pred = model(x_data)
    # 计算损失
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())

    # 所有权重每次都梯度清零
    optimizer.zero_grad()
    # 反向传播求梯度
    loss.backward()
    # 更新,step()更新函数
    optimizer.step()

# 输出权重和偏置
print('w=', model.linear.weight.item())
print('b=', model.linear.bias.item())

# 测试
x_test = torch.Tensor([[4.0]])
y_test = torch = model(x_test)
print('y_pred=', y_test.data)

 运行结果如图:

因为是随机梯度下降算法,所以每次训练结果都是不同的,运行结果不用拘泥于数字。


补充:

  • torch.nn.Linear类

  •  torch.nn.MSELoss类 :    

                 size_average:是否求均值

                 reduce:最终是否需要降维(一般不考虑)

  •  torch.optim.SGD类:

              params:模型中所有需要训练的参数

              lr:自定义学习率

              momentum:是否需要冲量

《PyTorch深度学习实践》学习笔记 【2】 《PyTorch深度学习实践》学习笔记 【2】 学习资源: 《PyTorch深度学习实践》完结合集 二、线性模型 2.1 概念: 2.1.1 数据集和测试集 ​ 数据集拿到后一般划分为两部分,训练集和测试集,然后使用训练集的数据来训练模型,用测试集上的误差作为最终模型在应对现实场景中的泛化误差。 ​ 一般来说,测试集在训练的时候是不能偷看的。 我们可以使用训练集的数据来训练模型,然后用测试集上的误差作为最终模型在应对现实场景中的泛化误差。有了测试集,我们想要验证模型的最终效果,只需将训练好的模型在测 阅读详情

相关推荐

刘二大人《PyTorch深度学习实践》

刘二大人《PyTorch深度学习实践》线性模型 线性模型 损失函数是针对一个样本的 training set得到的是一个平均平方误差MSE 穷举法绘制损失曲线:numpy和matplotlib import numpy as np import matplotlib.pyplot as plt #数据集 x_data = [1.0,2.0,3.0] y_data = [2.0,4.0,6.0] #定义模型 def forward(x): return x * w #定义损失函数 def loss

baimenglin的博客 3558

pytorch深度学习(6)用pytorch实现线性回归

用pytorch实现线性回归

qq_63647674的博客 1527

Pytorch实现线性回归模型

我们接下来使用Pytorch的API来手动构建一个线性回归的假设函数损失函数及优化方法,熟悉一下训练模型的流程。🧨我们将这批数据每次分成16份训练,并且这样重复训练epochs次,可以更深入地学习数据中的特征和模式,有助于防止模型快速陷入局部最优解,从而提高模型的泛化能力,而且。由于每个批次的数据都是随机抽取的。方法被调用时,PyTorch 会自动计算该张量相对于所有需要梯度的参数的梯度,并将这些梯度累加到对应参数的。是简单函数还是复杂的损失函数,都能利用相同的方法来进行梯度的反向传播。

小森的博客 2742

刘二PyTorch深度学习(四)——PyTorch实现线性回归

PyTorch实现线性回归

zhaoweiaier的博客 950

《Pytorch深度学习实践》课程合集(刘二大人)笔记

2 线性模型 深度学习步骤 数据集 —— 拿到的训练集,要分成两部分,训练集,交叉验证集 和 测试集 模型 训练 推理 ML常用损失函数

竦貊的博客 5793

pytorch学习笔记(五):线性回归的简洁实现

文章目录前言1 生成数据集2 读取数据3 定义模型4 初始化模型参数5 定义损失函数6 定义优化算法7 训练模型小结 前言 随着深度学习框架的发展,开发深度学习应用变得越来越便利。实践中,我们通常可以用比上一节更简洁的代码来实现同样的模型。在本节中,我们将介绍如何使用PyTorch更方便地实现线性回归的训练。 1 生成数据集 我们生成与上一节中相同的数据集。其中features是训练数据特征,labels是标签。 num_inputs = 2 num_examples = 1000 true_w = [2,

逐梦er的博客 1634

刘二大人 《PyTorch深度学习实践》第5讲 用Pytorch实现线性回归

指路☞《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili 知识补充: 1、pytorch神经网络模型 2、类后面加括号,表示构造对象;Linear的对象里面包含w和b,将来我们可以直接用Linear来完成wx+b的运算,Linear也可以自动backward,self.linear是个对象。 3、新版criterion 4、遇到最sb的bug:libpng warning: iCCP: cHRM chunk does not match sRGB 它是时不时抽风,..

qq_39705798的博客 409

【Boost5】Boost变换器的输入电容

节点的电流有3个,一个是来自电源输入的,由于我们把Vin看成理想电源以及线路的电感的存在,它可以近似看作是恒定的电流源Iin,一个是流向输入电容Cin的电流Icin,另外一个节点是电感L电流IL。电容电流波形在整个开关周期内的平均值为0,充电和放电在一个周期中各占1/2,在图中充电部分面积和放电部分面积相等,那么在充电或放电的电荷量Q=I*t,从图中可以看出,在一个周期内电容电流变化量是ΔIL,那在电容在充电1/2T周期中电流的变化量是1/2ΔIL。输入电容上的ESR也会随着电流变化,影响输入电压的变化。

qq_43416206的博客 3348

Pytorch深度学习笔记(六)用pytorch实现线性回归

torch.optim.SGD(params, lr=required, momentum=0, dampening=0,weight_decay=0, nesterov=False),params参数,lr学习率。torch.nn.Linear(in_features,out_features,bias=True),in_features,out_features为输入样本和输出样本的数量。,如图,线性模型的x,y都是3*1的向量张量。

qq_45981086的博客 1053

【WorkBuddy】WorkBuddy 智能体快速上手:从零到一的实践指南

文章摘要: 传统自动化脚本难以应对灵活多变的自然语言需求,导致逻辑复杂、维护成本高。智能体(Agent)通过理解语义意图、动态决策和松耦合组件解决了这些问题。WorkBuddy采用声明式配置,通过可视化界面定义意图、实体和对话策略,无需编码即可快速构建智能体。其核心组件包括意图分类、实体提取、对话策略、故事样本和回退机制,适用于客服支持、知识问答等高频场景。通过环境准备(Python/Node.js/Redis)和简单配置,用户可以快速搭建可运行的智能体,显著提升自动化效率。

ruiqideng的博客 1651

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 417

用PyTorch实现线性回归

pytorch

深浅卡布星的博客 689

QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

常用的地图种类分为交通图,地形图,卫星图等等,在QML的Map(以OSM地图为例)中提供activeMapType属性用于读取当前显示的地图类型(注意:该属性为只读属性,不能用于赋值),QML中地图的加载寻找根据瓦片的文件名进行查找,例如名为"osm_100-l-5-2-2-3.png"的瓦片,其中5代表了该地图的类型

zjgo007的专栏 3164

【Pytorch深度学习实践】B站up刘二大人课程笔记——目录与索引(已完结)

从有代码的课程开始讨论 Lecture02——Linear Model 本课程的主要任务是构建一个完整的线性模型: 导入numpy和matplotlib库; 导入数据 x_data 和 y_data; 定义前向传播函数: forward:输出是预测值y_hat 定义损失函数: loss:损失函数定义为MSE:均方根误差 创建两个空列表,因为后面绘图的时候要用: 分别是横轴的w_list和纵轴的mse_list 开始计算(我觉得这里没有训练的概念,只是单纯的计算每一个数据对应的预测值,然

weixin_42306148的博客 1万+

UE4动作游戏实例RPG Action解析二:GAS系统播放武器绑定的技能,以及GE效果

官方实例激活技能通过装备系统数据激活,我先用武器数据资产直接激活官方实例蒙太奇播放是自定义的AbilityTask,我先用更简单的方法实现效果1.1.1 插件启用AbilitySystem1.1.2 PlayerCharacter绑定技能组件AbilitySystemComponent 1.1.3 技能初始化,AbilitySystemComponent->GiveAbility 把上节获取到的默认武器绑定的技能GameAbility 添加到ASC组件 1.2、创建一个GameplayAbili

yuchenwuhen的专栏 1280

GRCNN抓取网络学习2【自制Jacquard数据集训练】

请先完成【机械臂视觉抓取从理论到实战】,这样有利于下面操作的理解!然后第二步是GRCNN抓取网络1【Jacquard数据集等效抓取集制作】,有了自己的数据集输入到GRCNN中是三种文件,接下来就是准备训练GRCNN网络啦!grasps.txtRGB.png本文帮大家根据自制Jacquard数据集训练GRCNN抓取网络,其中包含数据格式的对齐,列举了常见的几种训练方法,相信能坚持到这里的都应该试试顺利了吧!接下来会针对GRCNN调优,期待一下下吧,那就别宁色你的三连。

vor234的博客 2797

【B站_刘二大人pytorch深度学习实践】笔记作业代码合集

手动训练:线性模型,梯度下降,BP Pytorch框架训练:线性回归,LogisticRegression,多维特征输入,加载数据集,多分类,CNN,RNN

m0_58586235的博客 3840

odom反算成经纬度

这个转换系统能够将局部坐标(相对于原点的X, Y, Z坐标)转换回全球坐标系统。将局部里程计数据反算成经纬度坐标的过程涉及几个关键步骤,主要是将相对于某个局部参考点的坐标(例如在机器人、无人车或无人机的导航系统中使用的坐标)转换回全球GPS坐标系统(WGS-84经纬度)。为了能够将局部里程计数据转换为经纬度,首先需要知道局部坐标系统的原点(即参考点)在全球坐标系统中的位置。对于从里程计获得的每个局部坐标点,使用步骤2中设置的坐标转换系统将其转换为经纬度。使用转换模型将局部坐标转换为全球坐标。

如果想成为中心,那么就到中心去吧。 650

PyTorch教程—B站刘二大人笔记

PyTorch教程—B站刘二大人笔记

weixin_53236432的博客 1956

信号处理算法:自适应滤波_(8).自适应陷波器

自适应陷波器是一种强大的工具,广泛应用于电力系统、通信系统和生物医学信号处理等领域。通过自适应调整滤波器的参数,自适应陷波器可以在特定频率处形成陷波,从而有效地抑制噪声或干扰信号。常见的自适应算法包括LMS和RLS,它们各有优缺点,可以根据实际需求选择合适的算法。

2401_87715305的博客 1371

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习——PyTorch使用不同优化器训练线性回归(B站刘二大人P5作业)

作业内容:使用不同优化器训练模型,画出不同优化器的损失(Loss)变化图像。 torch.optim.Adagrad torch.optim.Adam torch.optim.Adamax torch.optim.ASGD torch.optim.LBFGS 注意:LBFGS优化器与本篇其他所有优化器不同,需要重复多次计算函数,因此需要传入一个闭包,让他重新计算你的模型,这个闭包应当清空梯度、计算损失,然后返回损失。 闭包代码如下: def closu...

Learning_AI的博客 2480

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《PyTorch深度学习实践》完结合集--B站刘二大人学习总结

无

mumawei123的博客 3240

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

刘二大人《PyTorch深度学习实践》p5用pytorch实现线性回归

所以难怪说学python就是疯狂调库,我怎么感觉深度学习的尽头是英语(bushi),我最开始都不知道torch.nn的这个nn是什么,原来是neural network的简称,这水平谁能想到我已经是研究生了,宇宙的尽头是自学,宇宙的尽头是考公。例如,如果我们有100个样本,每个样本的特征由面积和房间数量组成,其中面积的维度是1(一个特征),房间数量的维度也是1(一个特征),那么输入特征的大小(同理,如果我们想要预测房屋的价格,这个预测可以看作是一个输出特征,价格可以被视为一个特征。

xzrrr的博客 1244

笔记|(b站)刘二大人:pytorch深度学习实践(代码详细笔记,适合零基础)

pytorch深度学习实践 笔记中的代码是根据b站刘二大人的课程所做的笔记,代码每一行都有注释方便理解,可以配套刘二大人视频一同使用。 用PyTorch实现线性回归 # 1、算预测值 # 2、算loss # 3、梯度设为0,并反向传播 # 3、梯度更新 import torch x_data = torch.Tensor([[1.0], [2.0], [3.0]]) y_data = torch.Tensor([[2.0], [4.0], [6.0]]) # 构造线性模型,后面都是使用这样的模

weixin_43267897的博客 1万+

Pytorch深度学习实践笔记5(b站刘二大人)

使用Pytorch实现,步骤如下: PyTorch Fashion(风格) prepare dataset design model using Class ,前向传播,计算y_pred Construct loss and optimizer,计算loss,Optimizer 更新w Training cycle (forward,backward,update)

发狂的小花的博客 1264

B站刘二大人-线性回归 Pytorch实现 Lecture 5

Pytorch入门

weixin_42382758的博客 238
上一篇: 深度学习——PyTorch反向传播学习实例(B站刘二大人P4作业)
下一篇: 深度学习——PyTorch使用不同优化器训练线性回归(B站刘二大人P5作业)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习CV的研一小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值