花都手机网站建设,门户网站和搜索网站的区别,兰州网站建设开发,模块化wordpress企业主题为了更清晰地展示 GoogLeNet 中每个卷积层及其相关参数#xff0c;我们可以将这些信息整理成表格形式。这不仅有助于理解每一层的输入和输出尺寸#xff0c;还能直观地看到卷积核的数量、大小、步长以及填充方式等关键参数。以下是 GoogLeNet 前几层#xff08;包括两个卷积…为了更清晰地展示 GoogLeNet 中每个卷积层及其相关参数我们可以将这些信息整理成表格形式。这不仅有助于理解每一层的输入和输出尺寸还能直观地看到卷积核的数量、大小、步长以及填充方式等关键参数。以下是 GoogLeNet 前几层包括两个卷积层和两个最大池化层以及第一个 Inception 模块的详细参数表。
GoogLeNet 卷积层参数表
层名称类型输入尺寸输出尺寸卷积核尺寸步长填充输入通道数 (Channel)输出通道数 (Num)备注conv1Conv2d224x224x3112x112x647x723364第一个卷积层使用7x7的大卷积核步长为2填充为3输出64个通道maxpool1MaxPooling2d112x112x6456x56x643x321--第一个最大池化层使用3x3的池化核步长为2填充为1conv2Conv2d56x56x6456x56x1923x31164192第二个卷积层使用3x3的卷积核步长为1填充为1输出192个通道maxpool2MaxPooling2d56x56x19228x28x1923x321--第二个最大池化层使用3x3的池化核步长为2填充为1inception3aInception Module28x28x19228x28x256多个卷积核11192256第一个Inception模块包含多个分支最终输出256个通道
Inception 模块 (inception3a) 详细参数
分支类型输入尺寸输出尺寸卷积核尺寸步长填充输入通道数 (Channel)输出通道数 (Num)备注branch1Conv2d ReLU28x28x19228x28x641x11019264使用1x1的卷积核进行降维输出64个通道branch2Conv2d ReLU Conv2d ReLU28x28x19228x28x1281x1, 3x31, 10, 1192961x1卷积核降维至96个通道再通过3x3卷积核扩展到128个通道branch3Conv2d ReLU Conv2d ReLU28x28x19228x28x321x1, 5x51, 10, 2192161x1卷积核降维至16个通道再通过5x5卷积核扩展到32个通道branch4MaxPooling2d Conv2d ReLU28x28x19228x28x323x3, 1x11, 11, 0--3x3最大池化后通过1x1卷积核降维至32个通道
表格解释
层名称表示该层在 GoogLeNet 中的具体位置或名称。类型指明该层是卷积层Conv2d、最大池化层MaxPooling2d还是 Inception 模块。输入尺寸表示该层接收的输入特征图的尺寸格式为 高度x宽度x通道数。输出尺寸表示该层产生的输出特征图的尺寸格式为 高度x宽度x通道数。卷积核尺寸对于卷积层表示使用的卷积核的尺寸对于 Inception 模块表示该模块内不同分支使用的卷积核尺寸。步长表示卷积或池化操作时的步长。填充表示卷积或池化操作时的填充方式通常为 0 或 1。输入通道数 (Channel)表示该层接收的输入特征图的通道数。输出通道数 (Num)表示该层产生的输出特征图的通道数。备注提供额外的说明或解释帮助理解该层的设计意图。
代码实现示例
import torch.nn as nnclass 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_size1)self.branch2 nn.Sequential(nn.Conv2d(in_channels, ch3x3red, kernel_size1),nn.ReLU(),nn.Conv2d(ch3x3red, ch3x3, kernel_size3, padding1))self.branch3 nn.Sequential(nn.Conv2d(in_channels, ch5x5red, kernel_size1),nn.ReLU(),nn.Conv2d(ch5x5red, ch5x5, kernel_size5, padding2))self.branch4 nn.Sequential(nn.MaxPool2d(kernel_size3, stride1, padding1),nn.Conv2d(in_channels, pool_proj, kernel_size1))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_classes1000):super(GoogLeNet, self).__init__()self.conv1 nn.Conv2d(3, 64, kernel_size7, stride2, padding3)self.maxpool1 nn.MaxPool2d(kernel_size3, stride2, padding1)self.conv2 nn.Conv2d(64, 192, kernel_size3, padding1)self.maxpool2 nn.MaxPool2d(kernel_size3, stride2, padding1)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卷积核进行降维减少了参数数量提高了计算效率。