当前位置:网站首页>动手学深度学习_NiN
动手学深度学习_NiN
2022-08-04 21:00:00 【CV小Rookie】
LeNet 、AlexNet 和 VGG 都有一个共同的设计模式:通过一系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进行处理。 AlexNet 和 VGG 对 LeNet 的改进主要在于如何扩大和加深这两个模块。
然而,如果使用了全连接层,可能会完全放弃表征的空间结构。 网络中的网络(NiN)提供了一个非常简单的解决方案:在每个像素的通道上分别使用多层感知机(其实就是加两层 1 x 1 的卷积,因为前面说过,1 x 1 的卷积相当于参数共享的 MLP)
通过图解可以看到,NiN 网络就是由 nin_block 组成,一个 nin_block 由一个卷积层 + 两个
1 x 1卷积组成:
最后的输出取消使用 MLP ,而是使用一个全局的 Pooling 将特征图的高和宽变为1,最后使用 Flatten 展平,得到输出。
def 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())
class NiN(nn.Module):
def __init__(self):
super(NiN, self).__init__()
self.model =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),
# 标签类别数是10
nin_block(384, 10, kernel_size=3, strides=1, padding=1),
nn.AdaptiveAvgPool2d((1, 1)),
# 将四维的输出转成二维的输出,其形状为(批量大小,10)
nn.Flatten()
)
def forward(self,x):
x = self.model(x)
return x
每一层的输出的 size :
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])
边栏推荐
猜你喜欢
[Teach you to use the serial port idle interrupt of the STM32HAL library]
使用百度EasyDL实现森林火灾预警识别
DICOM医学影像协议
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
ts集成和使用
How to understand the crawler's Scrapy framework in the simplest and most popular way?
格密码入门
Zero-knowledge proof - zkSNARK proof system
【数据挖掘】搜狐公司数据挖掘工程师笔试题
如何用好建造者模式
随机推荐
run command for node
【数据挖掘】搜狐公司数据挖掘工程师笔试题
dotnet 使用 lz4net 压缩 Stream 或文件
How to train a deep learning model?
matlab 画图
win10 uwp 使用 ScaleTransform 放大某个元素
链栈的应用
win10 uwp modify picture quality compress picture
【编程思想】
vs Code 运行一个本地WEB服务器
链路聚合技术及VRRP
知识分享|如何设计有效的帮助中心,不妨来看看以下几点
proe和creo的区别有哪些
PCBA方案设计——厨房语音秤芯片方案
88.(cesium之家)cesium聚合图
Retrofit的使用及原理详解
C语言之实现扫雷小游戏
Apache服务器的配置[通俗易懂]
dotnet 通过 WMI 获取系统安装软件
【随记】新一天搬砖 --20220727