当前位置:网站首页>动手学深度学习_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])
边栏推荐
- vs Code 运行一个本地WEB服务器
- Win10 uwp use ScaleTransform magnify an element
- QT(42)-QT线程-线程调用槽函数
- 【手把手教你使用STM32HAL库的串口空闲中断】
- dotnet enables JIT multi-core compilation to improve startup performance
- Apache服务器的配置[通俗易懂]
- Five Minutes Introductory Text Processing Three Musketeers grep awk sed
- win10 uwp modify picture quality compress picture
- [AGC] Build Service 1 - Cloud Function Example
- 拒绝服务攻击DDoS介绍与防范
猜你喜欢

DICOM医学影像协议

Interviewer: How is the expired key in Redis deleted?

Qt Designer生成的图形可以自适应窗口的大小变化

构建Buildroot根文件系统(I.MX6ULL)
![[Academic related] Tsinghua professor persuaded to quit his Ph.D.:I have seen too many doctoral students have mental breakdowns, mental imbalances, physical collapses, and nothing!...](/img/d8/a367c26b51d9dbaf53bf4fe2a13917.png)
[Academic related] Tsinghua professor persuaded to quit his Ph.D.:I have seen too many doctoral students have mental breakdowns, mental imbalances, physical collapses, and nothing!...

项目难管理?先学会用好甘特图(内附操作方法及实用模板)

88. (the home of cesium) cesium polymerization figure

Web3时代的战争

After the tester with 10 years of service "naked resignation" from the big factory...

伺服电机矢量控制原理与仿真(1)控制系统的建立
随机推荐
[21天学习挑战赛——内核笔记](二)——设备树基础
【1403. 非递增顺序的最小子序列】
[AGC] Build Service 1 - Cloud Function Example
工龄10年的测试员从大厂“裸辞”后...
动态规划_双数组字符串
2022-8-4 第七组 ptz 锁与线程池和工具类
使用堡塔应用管理器配置laravel队列方法
【debug】postgres数据存储错乱
dotnet delete read-only files
【AGC】构建服务1-云函数示例
【C语言】指针和数组的深入理解(第三期)
该如何训练好深度学习模型?
Comic | Two weeks after the boss laid me off, he hired me back and doubled my salary!
88.(cesium之家)cesium聚合图
LayaBox---TypeScript---举例
链队
run command for node
ADB 安装 + 打驱动全教程
如何用好建造者模式
基于单向链表结构的软件虚拟定时器的设计与构建