动手学深度学习(pytorch)学习记录29-网络中的网络(NiN)[学习记录]

介绍

网络中的网络(Network in Network,简称NiN)是一种经典的卷积神经网络结构,由Min Lin等人在2013年提出。NiN的核心思想是在传统的卷积神经网络中引入小型的多层感知机(MLP),以增强网络的特征提取能力。

NiN的主要特点包括:

  • MLP卷积层(MLP Convolution Layers):NiN通过在卷积层之间加入小型的MLP网络来提取更抽象的特征。这些MLP网络实际上是1x1卷积层,它们可以在保持空间结构的同时,对每个像素位置的通道进行全连接操作。

  • 全局平均池化层(Global Average Pooling):NiN去除了容易造成过拟合的全连接层,而是使用全局平均池化层来减少模型参数的数量。这种池化层在所有位置上进行求和,输出固定数量的特征,直接用于分类。

  • NiN块(NiN Blocks):NiN的基本构建单元是NiN块,它由一个普通卷积层和两个1x1卷积层组成。普通卷积层负责提取空间特征,而1x1卷积层则充当逐像素的全连接层,增强了特征的非线性表达能力。

  • 减少参数数量:由于使用了全局平均池化层和1x1卷积层替代传统的全连接层,NiN显著减少了模型的参数数量,有助于缓解过拟合问题。

  • 提高泛化能力:NiN的设计有助于提高模型的泛化能力,因为它通过MLP卷积层和全局平均池化层捕捉到了更丰富的特征表示。

NiN的这些设计影响了后续许多卷积神经网络的结构,尤其是在特征提取和分类器设计方面。尽管NiN是一个相对较老的模型,但它的设计理念仍然对深度学习领域产生了深远的影响。

LeNet、AlexNet和VGG都有相同的设计模式:用一系列的卷积层和汇聚层来提取空间结构特征,然后通过全连接层对特征的表征进行处理。
NiN网络使用的NiN块通过在卷积层之间加入类似于全连接层的1x1卷积层(也称为mlpconv层),增强了网络的非线性特征提取能力。这种设计允许网络在保持空间结构信息的同时,增加了网络的深度和复杂度。

NiN块

以一个普通的卷积层开始,后接两个1×1卷积层(充当带有ReLU激活函数的逐像素全连接层)

import torch
from torch import nn
from d2l import torch as d2l


def nin_block(in_channels, out_channels, kernel_size, strides, padding):
    return nn.Sequential(
        nn.Conv2d(in_channels, out_channels, kernel_size, strides
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

walfar

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

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

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

打赏作者

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

抵扣说明:

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

余额充值