·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
DZ插件网 门户 站长圈 查看内容

利用Inception模块搭建网络

2024-9-27 09:18| 发布者: 浅生| 查看: 65181| 评论: 0

摘要: 1 问题(1)Inception详解(2)利用Inception模块搭建网络2 方法什么是InceptionInception模块是深度卷积神经网络中的一种特殊结构,它是由Google的Christian Szegedy等人提出的。Inception模块的设计目的是解决深度 ...
1 问题

(1)Inception详解

(2)利用Inception模块搭建网络

2 方法

  1. 什么是Inception
    Inception模块是深度卷积神经网络中的一种特殊结构,它是由Google的Christian Szegedy等人提出的。Inception模块的设计目的是解决深度神经网络计算量过大、参数过多以及容易过拟合等问题。
    Inception模块采用了多种尺寸的卷积核来同时进行卷积运算,这些卷积核包括11、33、5*5等。这种设计可以减少模型的参数数量,同时降低计算复杂度。此外,Inception模块还使用了批量归一化(Batch Normalization)技术,进一步提高了模型的训练速度和稳定性。
    Inception模块中的每个卷积层并不是简单的全连接层,而是先进行一次普通的卷积运算,然后通过激活函数进行非线性转换,再对输出的特征图进行归一化处理。这样可以增加模型的非线性表达能力,同时避免梯度消失的问题。
    在Inception模块中,不同尺寸的卷积核之间没有固定的连接关系,而是根据实际需要来调整。这种设计灵活性很高,可以根据不同的任务和数据集来进行调整和优化。

  2. Pytorch搭建Inception
import torch
from torch import nn
class inceptionBlock(nn.Module):
   def __init__(self):
       super().__init__()
       self.conv1=nn.Conv2d(
           in_channels=1,  #模块的第一个卷积的输入通道数
           out_channels=16,
           kernel_size=1,
           stride=2
           #padding=1   #特征图大小不改变
       )
       self.relu1=nn.ReLU()
       self.conv2=nn.Conv2d(
           in_channels=16,
           out_channels=128,
           kernel_size=1,
           #stride=1
           #padding=1
       )
       self.relu2=nn.ReLU()
       self.conv3=nn.Conv2d(
           in_channels=128,
           out_channels=256,
           kernel_size=1,
           stride=2
       )
       self.relu3=nn.ReLU()
       # self.conv4=nn.Conv2d(
       #     in_channels=256,
       #     out_channels=256,
       #     kernel_size=1,
       #     stride=7
       # )
       self.b4=nn.Sequential(
           nn.MaxPool2d(  #池化操作不改变特征图大小
               kernel_size=3,
               padding=1,
               stride=7,
           ),
           nn.Conv2d(
               in_channels=256,  #池化不改变特征图通道数
               out_channels=256,
               kernel_size=1,
           )
       )
       self.relu4=nn.ReLU()
       self.flatten=nn.Flatten()
       self.fc1=nn.Linear(
           in_features=256,
           out_features=10,
       )
   def forward(self,x):
       x=self.conv1(x)
       x=self.relu1(x)
       x=self.conv2(x)
       x=self.relu2(x)
       x=self.conv3(x)
       x=self.relu3(x)
       # x=self.conv4(x)
       x=self.b4(x)
       x=self.relu4(x)
       x=self.flatten(x)
       x=self.fc1(x)
       return x
if __name__ == '__main__':
   x = torch.rand(size=(1, 1, 28, 28))
   block = inceptionBlock()
   out = block(x)
   print(out.shape)


3 结语

通过本次探究Inception搭建网络得知Inception模块是一种非常有效的深度神经网络结构,它通过多种技术和设计来提高模型的性能和稳定性,同时减少模型的参数数量和计算复杂度。




上一篇:使用PT实现搭建帧中继网络
下一篇:全省首个!马关县搭建农村产权交易网络平台

鲜花

握手

雷人

路过

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.224.59.107,GMT+8, 2024-11-23 01:26 , Processed in 0.221554 second(s), 44 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯
扫一扫添加微信客服
QQ客服返回顶部
返回顶部