12.10深度学习_经典神经网络_GoogleNet自我理解

为了更清晰地展示 GoogLeNet 中每个卷积层及其相关参数,我们可以将这些信息整理成表格形式。这不仅有助于理解每一层的输入和输出尺寸,还能直观地看到卷积核的数量、大小、步长以及填充方式等关键参数。以下是 GoogLeNet 前几层(包括两个卷积层和两个最大池化层,以及第一个 Inception 模块)的详细参数表。

GoogLeNet 卷积层参数表

层名称 类型 输入尺寸 输出尺寸 卷积核尺寸 步长 填充 输入通道数 (Channel) 输出通道数 (Num) 备注
conv1 Conv2d 224x224x3 112x112x64 7x7 2 3 3 64 第一个卷积层,使用7x7的大卷积核,步长为2,填充为3,输出64个通道
maxpool1 MaxPooling2d 112x112x64 56x56x64 3x3 2 1 - - 第一个最大池化层,使用3x3的池化核,步长为2,填充为1
conv2 Conv2d 56x56x64 56x56x192 3x3 1 1 64 192 第二个卷积层,使用3x3的卷积核,步长为1,填充为1,输出192个通道
maxpool2 MaxPooling2d 56x56x192 28x28x192 3x3 2 1 - - 第二个最大池化层,使用3x3的池化核,步长为2,填充为1
inception3a Inception Module 28x28x192 28x28x256 多个卷积核 1 1 192 256 第一个Inception模块,包含多个分支,最终输出256个通道

Inception 模块 (inception3a) 详细参数

分支 类型 输入尺寸 输出尺寸 卷积核尺寸 步长 填充 输入通道数 (Channel) 输出通道数 (Num) 备注
branch1 Conv2d + ReLU 28x28x192 28x28x64 1x1 1 0 192 64 使用1x1的卷积核进行降维,输出64个通道
branch2 Conv2d + ReLU + Conv2d + ReLU 28x28x192 28x28x128 1x1, 3x3 1, 1 0, 1 192 96 1x1卷积核降维至96个通道,再通过3x3卷积核扩展到128个通道
branch3 Conv2d + ReLU + Conv2d + ReLU 28x28x192 28x28x32 1x1, 5x5 1, 1 0, 2 192 16 1x1卷积核降维至16个通道,再通过5x5卷积核扩展到32个通道
branch4 MaxPooling2d + Conv2d + ReLU 28x28x192 28x28x32 3x3, 1x1 1, 1 1, 0 - - 3x3最大池化后,通过1x1卷积核降维至32个通道

表格解释

  • 层名称:表示该层在 GoogLeNet 中的具体位置或名称。
  • 类型:指明该层是卷积层(Conv2d)、最大池化层(MaxPooling2d)还是 Inception 模块。
  • 输入尺寸 :表示该层接收的输入特征图的尺寸,格式为 高度x宽度x通道数
  • 输出尺寸 :表示该层产生的输出特征图的尺寸,格式为 高度x宽度x通道数
  • 卷积核尺寸:对于卷积层,表示使用的卷积核的尺寸;对于 Inception 模块,表示该模块内不同分支使用的卷积核尺寸。
  • 步长:表示卷积或池化操作时的步长。
  • 填充 :表示卷积或池化操作时的填充方式,通常为 01
  • 输入通道数 (Channel):表示该层接收的输入特征图的通道数。
  • 输出通道数 (Num):表示该层产生的输出特征图的通道数。
  • 备注:提供额外的说明或解释,帮助理解该层的设计意图。

代码实现示例

python 复制代码
import torch.nn as nn

class Inception(nn.Module):
    def __init__(self, in_channels, ch1x1, ch3x3red, ch3x3, ch5x5red, ch5x5, pool_proj):
        super(Inception, self).__init__()
        self.branch1 = nn.Conv2d(in_channels, ch1x1, kernel_size=1)
        self.branch2 = nn.Sequential(
            nn.Conv2d(in_channels, ch3x3red, kernel_size=1),
            nn.ReLU(),
            nn.Conv2d(ch3x3red, ch3x3, kernel_size=3, padding=1)
        )
        self.branch3 = nn.Sequential(
            nn.Conv2d(in_channels, ch5x5red, kernel_size=1),
            nn.ReLU(),
            nn.Conv2d(ch5x5red, ch5x5, kernel_size=5, padding=2)
        )
        self.branch4 = nn.Sequential(
            nn.MaxPool2d(kernel_size=3, stride=1, padding=1),
            nn.Conv2d(in_channels, pool_proj, kernel_size=1)
        )

    def forward(self, x):
        branch1 = self.branch1(x)
        branch2 = self.branch2(x)
        branch3 = self.branch3(x)
        branch4 = self.branch4(x)
        outputs = [branch1, branch2, branch3, branch4]
        return torch.cat(outputs, 1)

class GoogLeNet(nn.Module):
    def __init__(self, num_classes=1000):
        super(GoogLeNet, self).__init__()

        self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3)
        self.maxpool1 = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)

        self.conv2 = nn.Conv2d(64, 192, kernel_size=3, padding=1)
        self.maxpool2 = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)

        self.inception3a = Inception(192, 64, 96, 128, 16, 32, 32)

    def forward(self, x):
        x = self.conv1(x)
        x = self.maxpool1(x)
        x = self.conv2(x)
        x = self.maxpool2(x)
        x = self.inception3a(x)
        return x

总结

通过上述表格,我们可以清楚地看到 GoogLeNet 的前几层是如何逐步处理输入图像的。每个卷积层和池化层都有明确的参数设置,确保了网络能够有效地提取特征并减少计算量。特别是 Inception 模块的设计,通过引入不同大小的卷积核和池化操作,使得网络能够在多个尺度上捕捉图像特征,同时利用1x1卷积核进行降维,减少了参数数量,提高了计算效率。

相关推荐
云空7 分钟前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
AIGC大时代8 分钟前
对比DeepSeek、ChatGPT和Kimi的学术写作关键词提取能力
论文阅读·人工智能·chatgpt·数据分析·prompt
山晨啊81 小时前
2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文
人工智能·机器学习
一水鉴天2 小时前
为AI聊天工具添加一个知识系统 之77 详细设计之18 正则表达式 之5
人工智能·正则表达式
davenian2 小时前
DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力
人工智能·深度学习·语言模型·deepseek
X.AI6662 小时前
【大模型LLM面试合集】大语言模型架构_llama系列模型
人工智能·语言模型·llama
CM莫问2 小时前
什么是门控循环单元?
人工智能·pytorch·python·rnn·深度学习·算法·gru
饮马长城窟2 小时前
Paddle和pytorch不可以同时引用
人工智能·pytorch·paddle
机器之心3 小时前
全面梳理200+篇前沿论文,视觉生成模型理解物理世界规律的通关密码,都在这篇综述里了!
人工智能
池佳齐3 小时前
《AI大模型开发笔记》DeepSeek技术创新点
人工智能·笔记