当前位置:网站首页>Hands-on Deep Learning_NiN
Hands-on Deep Learning_NiN
2022-08-04 21:08:00 【CV Small Rookie】
LeNet, AlexNet and VGG all share a common design pattern: extract spatial structure features through a series of convolutional layers and pooling layers; and then process the representation of features through fully connected layers.The improvement of LeNet by AlexNet and VGG mainly lies in how to expand and deepen these two modules.
However, if fully connected layers are used, the spatial structure of the representation may be discarded entirely.The network in network (NiN) provides a very simple solution: use a multi-layer perceptron on each pixel channel (in fact, add two layers of 1 x 1 convolution, because as mentioned earlier, 1 x 1The convolution is equivalent to a parameter-sharing MLP)
As you can see from the diagram, the NiN network is composed of nin_blocks, and a nin_block consists of a convolutional layer + two
1 x 1 convolution composition:
The final output cancels the use of MLP, but uses a global Pooling to change the height and width of the feature map to 1, and finally uses Flatten to flatten to get the output.
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),# The number of tag categories is 10nin_block(384, 10, kernel_size=3, strides=1, padding=1),nn.AdaptiveAvgPool2d((1, 1)),# Convert the 4D output to a 2D output with shape (batch size, 10)nn.Flatten())def forward(self,x):x = self.model(x)return x
The size of the output of each layer:
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])
边栏推荐
猜你喜欢
【2022牛客多校5 A题 Don‘t Starve】DP
After encountering MapStruct, the conversion between PO, DTO and VO objects is no longer handwritten
某男子因用本地虚拟机做压测,惨遭字节面试官当场嘲笑
Oreo域名授权验证系统v1.0.6公益开源版本网站源码
漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!
实战:10 种实现延迟任务的方法,附代码!
LayaBox---TypeScript---首次接触遇到的问题
Matlab画图2
DSPE-PEG-Aldehyde,DSPE-PEG-CHO,磷脂-聚乙二醇-醛基一种疏水18碳磷脂
Configure laravel queue method using fort app manager
随机推荐
如何进行AI业务诊断,快速识别降本提效增长点?
STP --- 生成树协议
Matlab画图2
明明加了唯一索引,为什么还是产生了重复数据?
matlab drawing
js数据类型、节流/防抖、点击事件委派优化、过渡动画
无代码平台字段设置:基础设置入门教程
Retrofit的使用及原理详解
【学术相关】清华教授发文劝退读博:我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
C语言之实现扫雷小游戏
漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!
adb控制常用命令
dotnet 删除只读文件
88.(cesium之家)cesium聚合图
After encountering MapStruct, the conversion between PO, DTO and VO objects is no longer handwritten
数据仓库(1)什么是数据仓库,数仓有什么特点
dotnet 使用 lz4net 压缩 Stream 或文件
【2022杭电多校5 1003 Slipper】多个超级源点+最短路
Spss-系统聚类手算实操
简述@RequestParam与@RequestBody参数注解