深度学习-卷积神经网络-NIN

网络结构是卷积神经网络(CNN)发展的关键。其中,网络结构的改进至关重要。本文将介绍一种具有创新意义的卷积神经网络——NIN(Network in Network)。

LeNet、AlexNet和VGG都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。

AlexNet和VGG对LeNet的改进主要在于如何扩大和加深这两个模块。 或者,可以想象在这个过程的早期使用全连接层。然而,如果使用了全连接层,可能会完全放弃表征的空间结构。

网络中的网络NiN 提供了一个非常简单的解决方案:在每个像素的通道上分别使用多层感知机

1. 网络结构组成

NiN块 使用了1×1的卷积层代表全连接层。

NIN的核心创新在于引入了“微网络”(Network in Network)的概念。具体来说,每个卷积层后面都跟随着一个1×1卷积核的微型网络,用于对特征图进行逐像素的特征变换,增加了网络的非线性表达能力。这种设计使得模型能够更深入地挖掘和利用特征信息。

与传统的卷积神经网络相比,NIN的结构设计更加紧凑,能够以较少的参数实现更好的性能。其主要特点如下:

  1. 1×1卷积层的应用:通过1×1卷积核对特征图进行逐像素的特征变换,增加模型的非线性表达能力。

  2. 全局平均池化层:在最后一层使用全局平均池化层代替全连接层,降低参数数量,减少过拟合风险,提高模型的泛化能力。

  3. 网络深度的优化:NIN通过增加网络的深度来提高模型的特征提取能力,同时保持了模型的简洁性。

对比 VGG 和 NIN 以及他们的架构的不同

2. 代码实现

代码改编自《动手学深度学习》

import torch
from torch import nn
from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size, strides, padding),nn.ReLU(),nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU(),nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU())
net = nn.Sequential(nin_block(1, 96, kernel_size=11, strides=4, padding=0),nn.MaxPool2d(3, stride=2),nin_block(96, 256, kernel_size=5, strides=1, padding=2),nn.MaxPool2d(3, stride=2),nin_block(256, 384, kernel_size=3, strides=1, padding=1),nn.MaxPool2d(3, stride=2),nn.Dropout(0.5),# 标签类别数是10nin_block(384, 10, kernel_size=3, strides=1, padding=1),nn.AdaptiveAvgPool2d((1, 1)),# 将四维的输出转成二维的输出,其形状为(批量大小,10)nn.Flatten())
X = torch.rand(size=(1, 1, 224, 224))
for layer in net:X = layer(X)print(layer.__class__.__name__,'output shape:\t', X.shape)输出:
Sequential output shape:     torch.Size([1, 96, 54, 54])
MaxPool2d output shape:      torch.Size([1, 96, 26, 26])
Sequential output shape:     torch.Size([1, 256, 26, 26])
MaxPool2d output shape:      torch.Size([1, 256, 12, 12])
Sequential output shape:     torch.Size([1, 384, 12, 12])
MaxPool2d output shape:      torch.Size([1, 384, 5, 5])
Dropout output shape:        torch.Size([1, 384, 5, 5])
Sequential output shape:     torch.Size([1, 10, 5, 5])
AdaptiveAvgPool2d output shape:      torch.Size([1, 10, 1, 1])
Flatten output shape:        torch.Size([1, 10])
lr, num_epochs, batch_size = 0.1, 10, 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())输出:
loss 0.563, train acc 0.786, test acc 0.790
3087.6 examples/sec on cuda:0

3. NIN的影响

NIN在多个图像分类任务中表现出了显著的性能提升。通过在ImageNet数据集上的实验验证,NIN在Top-5错误率上达到了较低的水平,证明了其在图像分类任务中的有效性。此外,NIN的结构设计使其适用于各种计算机视觉任务,包括目标检测和图像分割等。

与其他卷积神经网络架构相比,NIN在网络结构和性能上具有以下优势:

  1. 更少的参数:NIN通过减少全连接层的数量,显著降低了模型的参数数量。

  2. 更高的效率:由于参数数量的减少,NIN在训练和推理过程中更加高效。

  3. 更好的泛化能力:全局平均池化层的使用提高了模型对新数据的适应能力。

  1. NiN 使用由一个卷积层和多个1×1卷积层组成的块。

  2. NiN块 可以在卷积神经网络中使用,以允许更多的每像素非线性。

  3. NiN去除了容易造成过拟合的全连接层,将它们替换为全局平均汇聚层(即在所有位置上进行求和)。该汇聚层通道数量为所需的输出数量(例如,Fashion-MNIST的输出为10)。

  4. 移除全连接层可减少过拟合,同时显著减少NiN的参数。

  5. NiN的设计影响了许多后续卷积神经网络的设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918581.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-96 深入浅出 MySQL 索引与排序机制详解与优化实践 Filesort

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的…

MLAG双活网络妙招:BGP + 静态VRRP实现智能负载均衡

引言 在现代数据中心和企业网络架构中,高可用性和负载均衡是核心需求。MLAG(Multi-Chassis Link Aggregation)技术结合BGP和静态VRRP的解决方案,为网络工程师提供了一种高效实现双活网络负载均衡的妙招。本文将深入探讨这一技术组…

如何构建PHP表单页面及验证相关原理(PHP基础)

文章目录PHP表单 - 必需字段PHP - 必需字段PHP - 显示错误信息总结PHP表单 - 验证邮件和URLPHP - 验证名称PHP - 验证邮件验证URLPHP 完整表单实例 PHP表单 - 必需字段 该章内容将介绍如何设置表单必需字段及错误信息 PHP - 必需字段 我们首先给出一个表的验证规则,…

API如何集成Web搜索功能:原理、实践与最佳选型

API如何集成Web搜索功能:原理、实践与最佳选型 在现代智能应用开发中,模型生成结果往往需要融合最新的互联网信息。通过集成Web搜索工具,模型可以在生成响应前主动检索网络,获取实时数据。这一能力极大提升了智能系统的准确性和时…

Spring Boot项目中调用第三方接口

目录 步骤1: 添加依赖 步骤2: 配置HTTP客户端 配置RestTemplate 配置WebClient 步骤3: 在Service层调用接口 使用RestTemplate示例 使用WebClient示例 步骤4: 在Controller层调用Service 注意事项 总结 Spring Boot项目中调用第三方接口 在Spring Boot项目中调用第三…

关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼

目录 一、引言:当“表”成为世界的通用语言 二、理论基石:关系模型与 ACID 三、引擎架构:一条 SQL 的奇幻漂流 四、存储机制:页、缓冲池与 WAL 五、并发控制:锁、MVCC 与隔离级别 六、SQL:声明式语言…

【软考架构】计算机网络中的IP地址表示和子网划分

在计算机网络中,IP地址用于唯一标识网络中的设备。IP地址的表示方式有两种:IPv4和IPv6。IPv4是当前使用最广泛的地址格式,而IPv6是为了解决IPv4地址耗尽问题而设计的。 1. IPv4地址 IPv4地址是一个32位的数字,通常用四个十进制数表…

【后端】Spring @Resource和@Autowired的用法和区别

以下是关于 Resource 和 Autowired 两个依赖注入注解的详细对比说明,重点关注它们的区别和使用场景:📌 核心区别总结特性Autowired (Spring)Resource (JSR-250 标准)来源Spring 框架原生注解Java 标准 (javax.annotation)默认注入方式按类型 …

php+apache+nginx 更换域名

phpapachenginx 更换域名✅ 第 1 步:确认到底是谁在监听 80/443✅ 第 2 步:按监听者修改配置🔹 场景 A:Apache 直接监听 80/443🔹 场景 B:Nginx 监听 80/443,反向代理到 Apache✅ 第 3 步&#…

AI 视频卫士:AI 无人机巡检,适配多元河道场景的治理利器

河道治理,场景各异,难题不同。城市内河的生活垃圾、景区河道的景观破坏、工业园区河道的工业废料,每一种场景都对巡检工作有着独特的要求。AI 视频卫士,凭借强大的 AI 技术,针对不同河道应用场景,打造专属巡…

累加和校验原理与FPGA实现

累加和校验原理与FPGA实现写在前面一、基础原理二、举个例子2.1 进位累加2.2 回卷累加三、FPGA实现3.1 发送端(产生校验和)3.2 接收端(累加和校验)3.3 仿真结果写在后面写在前面 在上文《奇偶校验原理与FPGA实现》中,讲…

深入解析Go设计模式:命令模式实战

什么是命令模式? 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为独立对象,从而允许客户端通过不同的请求对象进行参数化配置。该模式支持请求的排队执行、操作记录以及撤销等功能。 命令模式UML类图如下所示: 命令模式包含五个核心角色,具体说明如下: …

Pytest项目_day11(fixture、conftest)

Fixture fixture是一种类似于setup、teardown,用于测试前后进行预备、清理工作的代码处理机制 相比于setup、teardown来说,fixture命名更灵活,局限性更少使用conftest.py配置里面可以实现数据共享,不需要import就能自动找到一些配…

DAY 43 复习日

作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 划分数据集 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader impo…

Flink运行时的实现细节

一、Flink集群中各角色运行架构先说Flink集群中的角色吧,有三个分别是客户端(Client)、JobManager、TaskManager。客户端负责接收作业任务并进行解析,将解析后的二进制数据发送给JobManager;JobManager是作业调度中心,负责对所有作…

思科、华为、华三如何切换三层端口?

三层交换机融合了二层交换技术与三层转发技术,具备强大的网络功能。主流厂商(思科、H3C、华为)的三层交换机均支持二层端口与三层端口的相互切换,但具体命令存在差异。本文将详细介绍三大厂商设备的端口切换方法及相关知识。一、各…

springboot的基础要点

Spring Boot 的核心设计理念是 ​​"约定优于配置"​​(Convention Over Configuration),旨在简化 Spring 应用的初始搭建和开发过程。以下是需要掌握的核心基础要点:​一、核心机制​​自动配置 (Auto-Configuration)​…

lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理

目录 一、引言:为什么选择MySQL? 二、MySQL安装与登录配置 2.1 环境准备 2.2 登录指令详解 三、数据库核心操作 3.1 数据库生命周期管理 3.2 数据库存储引擎选择 四、数据表设计与操作 4.1 表结构创建(含数据类型详解) …

Spring源码解析 - SpringApplication run流程-prepareContext源码分析

prepareContext源码分析 private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,ConfigurableEnvironment environment, SpringApplicationRunListeners listeners,ApplicationArguments applicationArguments, Bann…

HIS系统:医院信息化建设的核心,采用Angular+Java技术栈,集成MySQL、Redis等技术,实现医院全业务流程管理。

HIS系统在医院信息化建设中扮演着核心的角色。它是一个综合性的信息系统,旨在管理和运营医院的各种业务,包括门诊、住院、财务、物资、科研等。技术细节:前端:AngularNginx后台:JavaSpring,SpringBoot&…