当前位置: 首页 > news >正文

多尺度卷积模型:Inception块

在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。

  • 使用窗口大小为1×1,3×3,5×51\times1,3\times3,5\times51×13×35×5的卷积层,从不同空间大小中提取信息。
  • 使用1×11\times11×1卷积层来改变通道数,可以降低通道维数。
  • 各层中窗口大小始终保持不变与输入的窗口一致。
  • 在Inception块中,通常调整的超参数是每层输出通道数。
  • 输出结果:各个路径的通道数相加,大小与输入大小一致。

Inception卷积块:

在这里插入图片描述

代码:

import torch
from torch import nn
from torch.nn import functional as Fclass Inception(nn.Module):def __init__(self, in_channels, c1, c2, c3, c4, **kwargs):super(Inception, self).__init__(**kwargs)self.p1_1 = nn.Conv2d(in_channels, c1, kernel_size=1)self.p2_1 = nn.Conv2d(in_channels, c2[0], kernel_size=1)self.p2_2 = nn.Conv2d(c2[0], c2[1], kernel_size=3, padding=1)self.p3_1 = nn.Conv2d(in_channels, c3[0], kernel_size=1)self.p3_2 = nn.Conv2d(c3[0], c3[1], kernel_size=5, padding=2)self.p4_1 = nn.MaxPool2d(kernel_size=3, stride=1, padding=1)self.p4_2 = nn.Conv2d(in_channels, c4, kernel_size=1)def forward(self, x):p1 = F.relu(self.p1_1(x))p2 = F.relu(self.p2_2(F.relu(self.p2_1(x))))p3 = F.relu(self.p3_2(F.relu(self.p3_1(x))))p4 = F.relu(self.p4_2(self.p4_1(x)))return torch.cat((p1, p2, p3, p4), dim=1)

测试:

x = torch.randn(5, 3, 10, 10)
model = Inception(3, c1=8, c2=(2, 4), c3=(3, 6), c4=4)# 用于打印模型每一层的输出结果
def print_outsize(module, x, y):print(module.__class__.__name__, y.shape)for layer in model.children():layer.register_forward_hook(print_outsize)out = model(x)
print('output:', out.shape)

结果:

Conv2d torch.Size([5, 8, 10, 10])
Conv2d torch.Size([5, 2, 10, 10])
Conv2d torch.Size([5, 4, 10, 10])
Conv2d torch.Size([5, 3, 10, 10])
Conv2d torch.Size([5, 6, 10, 10])
MaxPool2d torch.Size([5, 3, 10, 10])
Conv2d torch.Size([5, 4, 10, 10])
output: torch.Size([5, 22, 10, 10])

参考文献

[1] 7.4. 含并行连结的网络(GoogLeNet) — 动手学深度学习 2.0.0 documentation (d2l.ai)

http://www.dtcms.com/a/290592.html

相关文章:

  • 基于单片机儿童滞留车内防滞留系统
  • Go中的UDP编程:实战指南与使用场景
  • C语言重难点小复习(结构体/联合体/枚举)
  • 字节内部流传的数据分析手册
  • 浙江宁波,天一阁古籍资源(5262种,PDF格式,1.26T)
  • Redis的五大基本数据类型
  • Linux | C Shell 与 Bash 的差异 / 环境变量配置问题解析
  • 数学公式Latex语法快速入门
  • RANsemi 推出适用于 Split 7.2 Open RAN 无线电单元的即插即用基带板
  • ps aux 和 ps -ef
  • RNS805 是针对 O-RAN 联盟兼容 Cat A O-RU 优化的 SoC,符合 3GPP 5G/4G 标准。
  • 模式识别与机器学习课程笔记(1):数学基础
  • 【深度学习新浪潮】如何系统性地学习扩散模型?
  • Elasticsearch 是 NVIDIA Enterprise AI Factory 验证设计中推荐的向量数据库
  • WAMP配置局域网https服务
  • 旋转目标检测(Rotated Object Detection)技术概述
  • 漏洞扫描 + 渗透测试:双轮驱动筑牢网络安全防线
  • Pandas - JSON格式数据操作实践
  • iOS —— 3Gshare项目总结与思考
  • 【网络安全】DDOS攻击
  • Python Matplotlib中的fontdict参数说明
  • 学习日志7.21
  • 【HarmonyOS】ArkUI - 声明式开发范式
  • 产品剖析之AI创作与协作的未来革新者Flowith
  • 【编程语言】C、C++、C#深度对比:三种语言的演进历程与应用场景
  • zabbix企业级分布式监控环境部署
  • Django关于ListView通用视图的理解(Cursor解释)
  • 牛客周赛 Round 101题解
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十六天
  • 阶段1--Linux中的网络配置