Pytorch经典模型复现系列(二)分类网络:VGGNet

本文是Pytorch经典模型复现系列的第二篇,聚焦于VGGNet。VGGNet通过堆叠多个3x3卷积层替代大尺寸卷积,证明了网络深度对性能的影响。VGG16和VGG19结构相似,主要区别在于深度。文章介绍了VGGNet的网络结构,并提供了Pytorch复现代码链接,代码仍在更新和完善中。
摘要由CSDN通过智能技术生成

Pytorch经典模型复现系列(二)分类网络:VGGNet

论文:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
复现代码:https://github.com/lvjian0706/CNN-repetition.git

网络简介

VGG的主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。VGG有两种结构,分别是VGG16和VGG19,两者并没有本质上的区别,只是网络深度不一样。

VGG16的一个主要改进是采用连续的3x3卷积核来代替11x11,7x7,5x5的大尺寸卷积核。对于给定的感受野,采用堆积的小卷积核在性能上是优于采用大卷积核的,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且参数更少。
其中,3个3x3卷积核可以代替7x7卷积核,2个3x3卷积核可以代替5*5卷积核。而在参数量上,3个步长为1的3x3卷积核参数总量为 3x(9xC^2) ,如果直接使用7x7卷积核,其参数总量为 49xC^2 ,这里 C 指的是输入和输出的通道数。很明显,27xC2小于49xC2,即减少了参数;而且3x3卷积核有利于更好地保持图像性质。

网络结构

在这里插入图片描述
VGG16包含了16个隐藏层(13个卷积层和3个全连接层),如上图中的D列所示
VGG19包含了19个隐藏层(16个卷积层和3个全连接层),如上图中的E列所示
VGG网络的结构非常一致,从头到尾全部使用的是3x3的卷积和2x2的max pooling。
在这里插入图片描述
在这里插入图片描述

Pytorch复现代码

import torch
import torch.nn as nn

class VGG16(nn.Module):
    def __init__(self, num_classes):
        super(VGG16, self).__init__()
        
        self.conv_layers = nn.Sequential(
                nn.Conv2d(3, 64, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.Conv2d(64, 64, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2, stride
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值