VGG介绍及Pytorch实现

本文介绍了VGG,一种以深度卷积和池化层为特点的卷积神经网络,重点讨论了VGG16和VGG19的结构,以及它们在图像分类任务中的应用。并提供了使用PyTorch实现VGG网络的代码示例。
摘要由CSDN通过智能技术生成

VGG是一种经典的卷积神经网络架构,由牛津大学视觉几何组(Visual Geometry Group)提出。VGG以其简单而有效的设计而闻名,其核心思想是通过多层深度的卷积和池化层来逐渐提取图像特征,并且通过堆叠多个卷积层和池化层来增加网络的深度。VGG网络结构中主要采用3x3大小的卷积核和2x2大小的最大池化核,这种统一的设计使得网络架构非常规整,易于理解和实现。VGG网络共有多个版本,其中VGG16和VGG19是最为常用的两个版本,分别包含16和19个卷积层,以及若干个全连接层。虽然VGG相对于其他深度学习模型而言较为简单,但其在图像分类等任务上表现出色,成为了深度学习领域的经典模型之一。

这篇文章很简单,就是卷积块的堆叠, 注意力卷积的通道输入输出即可,没什么难度。

Pytorch代码

# Define VGG-16 and VGG-19.
import torch

cfg = {
    'VGG-16': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'],
    'VGG-19': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M']
}


# VGG-16 and VGG-19
class VGGNet(torch.nn.Module):
    def __init__(self, VGG_type, num_classes):
        super(VGGNet, self).__init__()
        self.features = self._make_layers(cfg[VGG_type])
        self.classifier = torch.nn.Linear(512, num_classes)

    def forward(self, x):
        out = self.features(x)
        out = out.view(out.size(0), -1)
        out = self.classifier(out)
        return out

    def _make_layers(self, cfg):
        layers = []
        in_channels = 3
        for x in cfg:
            if x == 'M':  # MaxPool2d
                layers += [torch.nn.MaxPool2d(kernel_size=2, stride=2)]
            else:
                layers += [torch.nn.Conv2d(in_channels, x, kernel_size=3, padding=1),
                           torch.nn.BatchNorm2d(x),
                           torch.nn.ReLU(inplace=True)]
                in_channels = x
        layers += [torch.nn.AvgPool2d(kernel_size=1, stride=1)]
        return torch.nn.Sequential(*layers)  # The number of parameters is more than one.

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值