• 【Pytorch + AlexNet + torchsummary】torchsummary 查看网 及 各层输出的 feature map 尺寸


    import torch
    import torch.nn as nn
    from torchsummary import summary
    
    
    class AlexNet(nn.Module):
        def __init__(self, num_classes=1000):
            super().__init__()
            self.features = nn.Sequential(
                nn.Conv2d(3, 96, kernel_size=11, stride=4, padding=2),  # [None, 3, 224, 224] --> [None, 96, 55, 55]
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2),  # [None, 96, 55, 55] --> [None, 96, 27, 27]
                nn.Conv2d(96, 256, kernel_size=5, padding=2),  # [None, 96, 27, 27] --> [None, 256, 27, 27]
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2),  # [None, 256, 27, 27] --> [None, 256, 13, 13]
                nn.Conv2d(256, 384, kernel_size=3, padding=1),  # [None, 256, 27, 27] --> [None, 384, 13, 13]
                nn.ReLU(inplace=True),
                nn.Conv2d(384, 384, kernel_size=3, padding=1),  # [None, 384, 13, 13] --> [None, 384, 13, 13]
                nn.ReLU(inplace=True),
                nn.Conv2d(384, 256, kernel_size=3, padding=1),  # [None, 384, 13, 13] --> [None, 256, 13, 13]
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2)  # [None, 256, 13, 13] --> [None, 256, 6, 6]
            )
    
            self.classifier = nn.Sequential(
                nn.Dropout(p=0.2),
                nn.Linear(256 * 6 * 6, 4096),
                nn.ReLU(inplace=True),
                nn.Dropout(p=0.2),
                nn.Linear(4096, 4096),
                nn.ReLU(inplace=True),
                nn.Linear(4096, num_classes)
            )
    
        def forward(self, inputs):
            x = self.features(inputs)
            x = torch.flatten(x, start_dim=1)
            outputs = self.classifier(x)
            return outputs
    
    
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model = AlexNet(1000).to(device)
    summary(model, (3, 224, 224))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    输出:

    ----------------------------------------------------------------
            Layer (type)               Output Shape         Param #
    ================================================================
                Conv2d-1           [-1, 96, 55, 55]          34,944
                  ReLU-2           [-1, 96, 55, 55]               0
             MaxPool2d-3           [-1, 96, 27, 27]               0
                Conv2d-4          [-1, 256, 27, 27]         614,656
                  ReLU-5          [-1, 256, 27, 27]               0
             MaxPool2d-6          [-1, 256, 13, 13]               0
                Conv2d-7          [-1, 384, 13, 13]         885,120
                  ReLU-8          [-1, 384, 13, 13]               0
                Conv2d-9          [-1, 384, 13, 13]       1,327,488
                 ReLU-10          [-1, 384, 13, 13]               0
               Conv2d-11          [-1, 256, 13, 13]         884,992
                 ReLU-12          [-1, 256, 13, 13]               0
            MaxPool2d-13            [-1, 256, 6, 6]               0
              Dropout-14                 [-1, 9216]               0
               Linear-15                 [-1, 4096]      37,752,832
                 ReLU-16                 [-1, 4096]               0
              Dropout-17                 [-1, 4096]               0
               Linear-18                 [-1, 4096]      16,781,312
                 ReLU-19                 [-1, 4096]               0
               Linear-20                 [-1, 1000]       4,097,000
    ================================================================
    Total params: 62,378,344
    Trainable params: 62,378,344
    Non-trainable params: 0
    ----------------------------------------------------------------
    Input size (MB): 0.57
    Forward/backward pass size (MB): 11.09
    Params size (MB): 237.95
    Estimated Total Size (MB): 249.62
    ----------------------------------------------------------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    SpringBoot的 8 个优点
    JAVA猎才优秀博主分享
    Linux命令篇(二):文档编辑部分
    Python实现PSO粒子群优化支持向量机回归模型(svr算法)项目实战
    智工教育:公务员知识点积累一
    进入数据结构的世界
    java毕业设计Vue框架校园相约健康运动平台源码+系统+数据库+lw文档+调试运行
    Matlab FFT 使用方法
    office mac苹果办公软件安装包安装教程详解
    球形气膜:举办大型活动和特色景点的独特优势—轻空间
  • 原文地址:https://blog.csdn.net/weixin_37804469/article/details/126582699