史上最全pytorch学习笔记2完结【文末附有源代码和参考书籍】

本文详细介绍了如何在PyTorch中使用Module类构建多层感知机模型,包括Sequential类的用法、模型参数的访问与初始化,以及如何在GPU上进行高效计算。涵盖了卷积神经网络的基础概念和LENET、ALEXNET和VGG网络的应用。
摘要由CSDN通过智能技术生成

模型构造

继承MODULE类来构造模型

Module 类是 nn 模块⾥提供的⼀个模型构造类,是所有神经⽹络模块的基类,我们可以继承它来定义我们想要的模型。下⾯继承 Module 类构造本节开头提到的多层感知机。这⾥定义的 MLP 类加载了Module 类的 init 函数和 forward 函数。它们分别⽤于创建模型参数和定义前向计算。前向计算也即正向传播。

import torch
from torch import nn
class MLP(nn.Module):
    # '''声明了两个全连接层
    def __int__(self,**kwargs):
        # 调⽤MLP⽗类Block的构造函数来进⾏必要的初始化。这样在构造实例时还可
        #以指定其他函数
        super(MLP,self).__init__(**kwargs)
        self.hidden=nn.Linear(784,256)#隐藏层
        self.act=nn.ReLU()
        self.output=nn.Linear(256,10)#输出层
# 定义模型的前向计算,即如何根据输⼊x计算返回所需要的模型输出
    def forward(self,x):
        a=self.act(self.hidden(x))
        return self.output(a)
    

以上的 MLP 类中⽆须定义反向传播函数。系统将通过⾃动求梯度⽽⾃动⽣成反向传播所需的
backward 函数。

我们可以实例化 MLP 类得到模型变量 net 。下⾯的代码初始化 net 并传⼊输⼊数据 X 做⼀次前向计
算。其中, net(X) 会调⽤ MLP 继承⾃ Module 类的 call 函数,这个函数将调⽤ MLP 类定义的
forward 函数来完成前向计算。在这里插入图片描述

MODULE的子类

事实上,PyTorch还实现了继承⾃ Module 的可以⽅便
构建模型的类: 如 Sequential 、 ModuleList 和 ModuleDict 等等

Sequential类

当模型的前向计算为简单串联各个层的计算时, Sequential 类可以通过更加简单的⽅式定义模型。这
正是 Sequential 类的⽬的:它可以接收⼀个⼦模块的有序字典(OrderedDict)或者⼀系列⼦模块作为参数来逐⼀添加 Module 的实例,⽽模型的前向计算就是将这些实例按添加的顺序逐⼀计算。
下⾯我们实现⼀个与 Sequential 类有相同功能的 MySequential 类。在这里插入图片描述
在这里插入图片描述

模型参数的访问,初始化和共享

我们通过 init 模块来初始化模型的参数。我们也介绍了访问模型参数的简单⽅法。本节将深⼊讲解如何访问和初始化模型参数,以及如何在多个层之间共享同⼀份模型参数。

import torch
from torch import nn
from torch.nn import init
net = nn.Sequential(nn.Linear(4, 3), nn.ReLU(), nn.Linear(3, 1)) #
pytorch已进⾏默认初始化
print(net)
X = torch.rand(2, 4)
Y = net(X).sum()

在这里插入图片描述

访问模型参数

print(type(net.named_parameters()))
for name, param in net.named_parameters():
   print(name, param.size())

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

初始化模型参数

在这里插入图片描述
在这里插入图片描述

读取和存储

到⽬前为⽌,我们介绍了如何处理数据以及如何构建、训练和测试深度学习模型。然⽽在实际中,我们
有时需要把训练好的模型部署到很多不同的设备。在这种情况下,我们可以把内存中训练好的模型参数存储在硬盘上供后续读取使⽤。

读写 TENSOR

我们可以直接使⽤ save 函数和 load 函数分别存储和读取 Tensor 。 save 使⽤Python的pickle实⽤程序将对象进⾏序列化,然后将序列化的对象保存到disk,使⽤ save 可以保存各种对象,包括模型、张量和字典等。⽽ laod 使⽤pickle unpickle⼯具将pickle的对象⽂件反序列化为内存。

下⾯的例⼦创建了 Tensor 变量 x ,并将其存在⽂件名同为 x.pt 的⽂件⾥。

import torch
from torch import nn
x=torch.ones(3)
torch.save(x,'x.pt')

#然后将数据从存储的文件读回内存
x2=torch.load('x.pt')

在这里插入图片描述
我们还可以存储⼀个 Tensor 列表并读回内存。

y=torch.zeros(4)
torch.save([x,y],'xy.pt')
xy_list=torch.load('xy.pt')
xy_list

在这里插入图片描述

读写 模型

在 PyTorch 中 , Module 的 可 学 习 参 数 ( 即权᯿和偏差 ) ,模块模型包含在参数中 ( 通 过
model.parameters() 访问)。 state_dict 是⼀个从参数名称隐射到参数 Tesnor 的字典对象。
在这里插入图片描述
在这里插入图片描述
保存和加载模型
PyTorch中保存和加载训练模型有两种常⻅的⽅法:

  1. 仅保存和加载模型参数( state_dict );
  2. 保存和加载整个模型。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GPU计算

到⽬前为⽌,我们⼀直在使⽤CPU计算。对复杂的神经⽹络和⼤规模的数据来说,使⽤CPU来计算可能
不够⾼效。在本节中,我们将介绍如何使⽤单块NVIDIA GPU来计算。所以需要确保已经安装好了
PyTorch GPU版本。准备⼯作都完成后,下⾯就可以通过 nvidia-smi 命令来查看显卡信息了。
在这里插入图片描述
PyTorch可以指定⽤来存储和计算的设备,如使⽤内存的CPU或者使⽤显存的GPU。默认情况下,
PyTorch会将数据创建在内存,然后利⽤CPU来计算。

#查看GPU是否可用
import torch 
from torch import nn
torch.cuda.available()
#查看数量
torch.cuda.device_count()
#查看名字
torch.cuda.get_device_name(0)

device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
x=torch.tensor([1,2,3],device=device)
#或着 
x=torch.tensor([1,2,3]).to(device)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二维卷积层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

填充和步幅

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

卷积神经网络

在这里插入图片描述

LENET模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

深度卷积神经⽹络(ALEXNET)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

VGG网络

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考文献:[
动手学深度学习(李沐)的pytorch版本(包含代码和pdf链接:https://pan.baidu.com/s/17uEh4x_GbO0F67bzgQkhuQ
提取码:cgbq

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pytorch是机器学习中的一个重要框架,它与TensorFlow一起被认为是机器学习的两大框架。Pytorch学习可以从以下几个方面入手: 1. Pytorch基本语法:了解Pytorch的基本语法和操作,包括张量(Tensors)的创建、导入torch库、基本运算等\[2\]。 2. Pytorch中的autograd:了解autograd的概念和使用方法,它是Pytorch中用于自动计算梯度的工具,可以方便地进行反向传播\[2\]。 3. 使用Pytorch构建一个神经网络:学习使用torch.nn库构建神经网络的典型流程,包括定义网络结构、损失函数、反向传播和更新网络参数等\[2\]。 4. 使用Pytorch构建一个分类器:了解如何使用Pytorch构建一个分类器,包括任务和数据介绍、训练分类器的步骤以及在GPU上进行训练等\[2\]。 5. Pytorch的安装:可以通过pip命令安装Pytorch,具体命令为"pip install torch torchvision torchaudio",这样就可以在Python环境中使用Pytorch了\[3\]。 以上是一些关于Pytorch学习笔记,希望对你有帮助。如果你需要更详细的学习资料,可以参考引用\[1\]中提到的网上帖子,或者查阅Pytorch官方文档。 #### 引用[.reference_title] - *1* [pytorch自学笔记](https://blog.csdn.net/qq_41597915/article/details/123415393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Pytorch学习笔记](https://blog.csdn.net/pizm123/article/details/126748381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值