PyTorch|构建自己的卷积神经网络——nn.Sequential()

2024-01-07 22:20

本文主要是介绍PyTorch|构建自己的卷积神经网络——nn.Sequential(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片

之前在构建神经网络时,我们一般是采用这种方式,就像这样:

class Network1(nn.Module):    def __init__(self):        super(Network1,self).__init__()        self.conv1 = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=5)        self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5)        self.fc1 = nn.Linear(in_features= 12*20*20, out_features=120)        self.out = nn.Linear(in_features=120, out_features=10)        def forward(self, t):        t=self.conv1(t)        t=self.conv2(t)        t=t.flatten(start_dim=1)        t=self.fc1(t)        t=self.out(t)        return t

在__init__()模块中,一系列的层被定义,比如卷积层,全连接层...在forward()方法中,我们对这些层进行操作,使得数据在网络中进行传播。

随着层的增加,以及池化操作,激活函数操作的增加,代码似乎变得很复杂。

在PyTorch中,提供了一种序列容器,叫做nn.Sequential(),它可以按照网络模块被添加的顺序依次执行。

于是上面的代码可以以这样的方式重写:​​​​​​​

class Network2(nn.Module):    def __init__(self):        super(Network2,self).__init__()        self.layer1=nn.Sequential(nn.Conv2d(in_channels=3, out_channels=6, kernel_size=5),                                      nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5),                                      nn.Flatten(),                                      nn.Linear(in_features= 12*20*20, out_features=120),                                      nn.Linear(in_features=120, out_features=10)                                         )    def forward(self,t):        t=self.layer1(t)        return t

让我们将一张图片输入到这两个网络中,看看会发生什么?​​​​​​​

path="E:\\3-10\\input1.jpg"img=Image.open(path)img=img.resize((28,28))#改变图片尺寸img=np.array(img)#转换为ndarrayimg=torch.tensor(img,dtype=torch.float32)#转换为张量img=img.permute(2,0,1)#改变维度顺序
img=img.unsqueeze(0)#增加批次维度img.size()​​​​​​
torch.manual_seed(10)#随机数种子net1=Network1()torch.manual_seed(10)net2=Network2()net1(img),net2(img)
(tensor([[  8.6586,   5.6796, -10.6183, -14.5155,  -5.1435,  -1.2218, -35.0356,            9.9759, -15.0035, -31.1104]], grad_fn=<AddmmBackward0>), tensor([[  8.6586,   5.6796, -10.6183, -14.5155,  -5.1435,  -1.2218, -35.0356,            9.9759, -15.0035, -31.1104]], grad_fn=<AddmmBackward0>))

注:由于每次初始化网络时,权重是随机的,所以要设置一个随机数种子,使得两个网络以一种固定的权重初始化,以确保两个网络在接受数据输入前完全相同。

结果很显然,两种网络输出了同样的结果!


第一种构建网络的方法让层和操作隔离开来,使得我们在构建网络时不同部分时专注于一点即可,而第二种方法则是直接按照顺序直接构建了网络,看起来似乎更简洁。

当然,以什么方式构建网络完全取决于习惯,这并不会对结果造成任何影响!

这篇关于PyTorch|构建自己的卷积神经网络——nn.Sequential()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581406

相关文章

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据