首页 > 其他分享 >Pytorch 中的 Sequential

Pytorch 中的 Sequential

时间:2024-08-29 15:56:06浏览次数:12  
标签:32 self padding Pytorch Sequential 64 Conv2d

1. 介绍

在PyTorch中,Sequential是一个模型容器。它是一个用于顺序排列神经网络模块(如层、激活函数等)的容器。通过使用Sequential,可以将多个模块按照顺序连接在一起,构建一个深度神经网络模型。

使用Sequential时,可以将每个模块按照顺序添加到Sequential容器中。每个模块都可以是一个单独的层、激活函数等。Sequential将按照添加的顺序依次执行这些模块,将输入数据传递给第一个模块,然后将输出作为下一个模块的输入,依次传递下去,直到最后一个模块。输出最后一个模块的输出即为整个Sequential模型的输出。

 2. 特性

Sequential的主要优点是简单易用。通过将不同的模块按照顺序组合在一起,不需要手动定义前向传播函数,可以直接调用Sequential实例进行前向传播。它也有一些限制,如无法处理具有分支或跳跃连接的模型结构,仅适用于顺序连接的模型

3. 使用

 CIFA10 的模型实现:

        注意: 为了保持 卷积后前后输出的 tensor 的 H 与 W 相同,需要公式进行计算。

 注意:

        1. Feature Maps 之后 需要 Flatten,之后通过 Linear 后,才可以到达 Hidden units,再经过 Linear 之后,才可以 Outputs

import torch.nn
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.tensorboard import SummaryWriter

class myModule(nn.Module):
    def __init__(self):
        super(myModule, self).__init__()
        # self.conv1 = Conv2d(3,32,5,padding=2)
        # self.maxpool1 = MaxPool2d(2)
        # self.conv2 = Conv2d(32, 32, 5, padding=2)
        # self.maxpool2 = MaxPool2d(2)
        # self.conv3 = Conv2d(32, 64, 5, padding=2)
        # self.maxpool3 = MaxPool2d(2)
        #
        # self.flatten = Flatten()  #  展平
        # self.linear1 = Linear(1024,64)
        # self.linear2 = Linear(64,10)

        self.module1 = Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),

            Flatten(),  # 展平
            Linear(1024, 64),
            Linear(64, 10)
        )

    def forward(self,x):
        # x = self.conv1(x)
        # x = self.maxpool1(x)
        # x = self.conv2(x)
        # x = self.maxpool2(x)
        # x = self.conv3(x)
        # x = self.maxpool3(x)
        #
        # x = self.flatten(x)
        # x = self.linear1(x)
        # x = self.linear2(x)
        x = self.module1(x)
        return x

"""
myModule(
  (conv1): Conv2d(3, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
  (maxpool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (conv2): Conv2d(32, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
  (maxpool2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (conv3): Conv2d(32, 64, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
  (maxpool3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (flatten): Flatten(start_dim=1, end_dim=-1)
  (linear1): Linear(in_features=1024, out_features=64, bias=True)
  (linear2): Linear(in_features=64, out_features=10, bias=True)
)
"""
myModule_1 = myModule()
print(myModule_1)

input = torch.ones((64,3,32,32))
output = myModule_1(input)

"""
torch.Size([64, 10])
"""
print(output.shape)


write = SummaryWriter("logs")
write.add_graph(myModule_1,input)
write.close()

结果:

标签:32,self,padding,Pytorch,Sequential,64,Conv2d
From: https://blog.csdn.net/SILVERCROWNAGE/article/details/141352508

相关文章

  • 从零开始的PyTorch【03】:优化你的神经网络模型
    从零开始的PyTorch【03】:优化你的神经网络模型前言欢迎回到PyTorch学习系列的第三篇!在前两篇文章中,我们学习了如何构建一个简单的神经网络并训练它,同时探索了数据集调整对模型性能的影响。今天,我们将深入探讨如何优化你的神经网络模型,使其在更复杂的任务中表现更好。我们......
  • 每天五分钟深度学习框架pytorch:nn.Module和nn.function的区别
    本文重点前面我们学习了神经网络工具箱nn.Module,本节课程我们学习一下nn.function,我们可以暂时这样认为,基本上nn.Module所能够完成的任务,nn.function基本上都可以完成,也就是它们两个是重复的,但是它们两个还是有很大的区别,这里我们简单的进行一下介绍。nn.Module和nn.func......
  • 并行动力:用PyTorch在多GPU上释放深度学习潜能
    标题:并行动力:用PyTorch在多GPU上释放深度学习潜能随着深度学习模型变得越来越复杂,单GPU训练往往难以满足需求。幸运的是,PyTorch提供了强大的多GPU训练支持,允许我们利用多个GPU来加速模型的训练过程。本文将详细介绍如何在PyTorch中使用多GPU训练,包括数据并行、模型并行以及......
  • 并行处理的魔法:PyTorch中torch.multiprocessing的多进程训练指南
    并行处理的魔法:PyTorch中torch.multiprocessing的多进程训练指南在深度学习领域,模型训练往往需要大量的计算资源和时间。PyTorch,作为当前最流行的深度学习框架之一,提供了torch.multiprocessing模块,使得开发者能够利用多核CPU进行多进程训练,从而显著加速训练过程。本文将深......
  • pytorch统计模型计算强度
    计算强度=运算数/访存数运算数有很多库可以算,例如thop的profilefromthopimportprofilemodel=torchvision.models.resnet18(weights=None)flops,params=profile(model,inputs=(torch.randn(1,3,224,224),))print("flops:{:.2f}Gflops".format(flops/1000/10......
  • 深度学习-pytorch-basic-003
    1.环境配置1.1anconda配置环境condacreate-nDL_pytorchpython=3.11condaacticvateDL_pytorchcondadeactivatecondaenvlistcondaremove-nDL_pytorch--all1.2torchCPU环境配置pipinstalltorch==1.10.0-ihttps://pypi.tuna.tsinghua.edu.cn/simplecond......
  • 深度学习-pytorch-basic-002
    from__future__importprint_functionimporttorchastx=t.Tensor(5,3)#构建(5,3)的矩阵,只是分配空间,未初始化print(x)tensor([[1.0194e-38,8.4490e-39,1.0469e-38],[9.3674e-39,9.9184e-39,8.7245e-39],[9.2755e-39,8.9082e-39,9.9184......
  • 捕获神经网络的精髓:深入探索PyTorch的torch.jit.trace方法
    标题:捕获神经网络的精髓:深入探索PyTorch的torch.jit.trace方法在深度学习领域,模型的部署和优化是至关重要的环节。PyTorch作为最受欢迎的深度学习框架之一,提供了多种工具来帮助开发者优化和部署模型。torch.jit.trace是PyTorch中用于模型追踪的一个重要方法,它能够将一个模......
  • pytorch常见错误_0240826
    pytorch常见错误RuntimeError:aleafVariablethatrequiresgradisbeingusedinanin-placeoperation.如下程序会抱上述错误x=torch.randn(3,requires_grad=True)x+=1#原位操作报错:RuntimeError:aleafVariablethatrequiresgradisbeingusedinan......
  • 释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践
    释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践在深度学习模型的训练过程中,计算资源的需求往往随着模型复杂度的提升而增加。PyTorch,作为当前领先的深度学习框架之一,提供了torch.nn.DataParallel这一工具,使得开发者能够利用多个GPU进行数据并行处理,从而显著加速......