当前位置:网站首页>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 xThe 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])
边栏推荐
- dotnet 删除只读文件
- IPV6地址
- LayaBox---TypeScript---举例
- Data warehouse (1) What is data warehouse and what are the characteristics of data warehouse
- 明明加了唯一索引,为什么还是产生了重复数据?
- Tear down the underlying mechanism of the five JOINs of SparkSQL
- visual studio 2015 warning MSB3246
- 如何进行AI业务诊断,快速识别降本提效增长点?
- 用 Excel 爬取网络数据的四个小案例
- [21天学习挑战赛——内核笔记](二)——设备树基础
猜你喜欢
随机推荐
链队
暴雨中的人
win10 uwp use WinDbg to debug
Web3安全风险令人生畏,应该如何应对?
Matlab画图2
ts集成和使用
【随记】新一天搬砖 --20220727
数据仓库(1)什么是数据仓库,数仓有什么特点
How to train a deep learning model?
遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了
PowerCLi 批量配置NTP
【编程思想】
IPV6地址
如何最简单、通俗地理解爬虫的Scrapy框架?
简述@RequestParam与@RequestBody参数注解
Win10 uwp use ScaleTransform magnify an element
After the tester with 10 years of service "naked resignation" from the big factory...
Retrofit的使用及原理详解
PowerCLi 导入License到vCenter 7
【一起学Rust | 进阶篇 | Service Manager库】Rust专用跨平台服务管理库







![[2022 Hangzhou Electric Multi-School 5 1003 Slipper] Multiple Super Source Points + Shortest Path](/img/78/054329dec6a6faea5e9d583b6a8da5.png)

