1 问题
(1)Inception详解
(2)利用Inception模块搭建网络
2 方法
- 什么是Inception
Inception模块的核心思想就是将不同的卷积层通过并联的方式结合在一起,经过不同卷积层处理的结果矩阵在深度这个维度拼接起来,形成一个更深的矩阵。Inception模块可以反复叠堆形成更大的网络,它可以对网络的深度和宽度进行高效的扩充,在提升深度学习网络准确率的同时防止过拟合现象的发生。Inception模块的优点是可以对尺寸较大的矩阵先进行降维处理的同时,在不同尺寸上对视觉信息进行聚合,方便从不同尺度对特征进行提取。
Inception模块中包含卷积操作,但是不同于传统卷积神经网络,此模块中可以设置多个通路,每个通路可以是不同的操作,相同的操作也可以设置不同的kernel size和stride。不同的卷积尺寸提供了不同的感受野,可以做不同级别上的特征提取,池化操作本身有提取特征的作用,而且因为没有参数不会产生过拟合,所以池化操作也作为此模块的一个通路。
Pytorch搭建Inception
[_,1,28,28]
[16,14,14]
[,128,14,14]
[,256,7,7]
[,256,1,1]
[,256]
[,10]
| import torch from torch import nn class second(nn.Module): def init(self,in_plances): super().init() self.b1=nn.Sequential( nn.Conv2d( in_channels=in_plances, out_channels=16, kernelsize=3, padding=1, stride=2 ), nn.ReLU() ) ‘’‘ [,1,28,28] [16,14,14] [,128,14,14] [,256,7,7] [,256,1,1] [,256] [,10] ’‘’ self.b2=nn.Sequential( nn.Conv2d( in_channels=16, out_channels=128, kernel_size=3, padding=1 ), nn.ReLU() ) self.b3=nn.Sequential( nn.Conv2d( in_channels=128, out_channels=256, kernel_size=3, padding=1, stride=2, ), nn.ReLU() ) self.b4=nn.Sequential( nn.MaxPool2d(7), nn.ReLU() ) self.flatten5=nn.Flatten() self.b6=nn.Sequential( nn.Linear( in_features=25611, out_features=256 ), nn.ReLU() ) self.b7=nn.Linear( in_features=256, out_features=10 ) def forward(self,x): x=self.b1(x) x=self.b2(x) x=self.b3(x) x=self.b4(x) x=self.flatten5(x) x=self.b6(x) x=self.b7(x) return x if name==‘main’: x=torch.rand(size=(1,1,28,28)) block = second(in_plances=1) out = block(x) print(out.shape) |
主要有两种类型的池化操作:最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化(Max Pooling):对于每个池化窗口(通常大小为2x2或3x3),选择窗口内的最大值作为输出。最大池化有助于保留图像中最显著的特征,通过选择最大值来捕捉局部特征。
3 结语
一个简单的卷积神经网络,适用于图像分类任务。模型的结构包括卷积层、池化层和全连接层,通过ReLU激活函数进行非线性变换。
池化(Pooling)是卷积神经网络(CNN)中一种常用的操作,用于减小输入数据的空间尺寸,降低计算量,同时保留重要特征。池化操作通常在卷积层之后应用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/196855.html