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卷积核进行降维,减少了参数数量,提高了计算效率。

相关推荐
阿坡RPA2 小时前
手搓MCP客户端&服务端:从零到实战极速了解MCP是什么?
人工智能·aigc
用户27784491049932 小时前
借助DeepSeek智能生成测试用例:从提示词到Excel表格的全流程实践
人工智能·python
机器之心2 小时前
刚刚,DeepSeek公布推理时Scaling新论文,R2要来了?
人工智能
算AI4 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
凯子坚持 c5 小时前
基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战
人工智能·paddlepaddle
你觉得2055 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
8K超高清6 小时前
中国8K摄像机:科技赋能文化传承新图景
大数据·人工智能·科技·物联网·智能硬件
hyshhhh6 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
薛定谔的猫-菜鸟程序员6 小时前
零基础玩转深度神经网络大模型:从Hello World到AI炼金术-详解版(含:Conda 全面使用指南)
人工智能·神经网络·dnn
币之互联万物6 小时前
2025 AI智能数字农业研讨会在苏州启幕,科技助农与数据兴业成焦点
人工智能·科技