VGGNet
VGGNet共有六个版本,最常用的VGG16,其采用五组卷积,三个全连接层,最后采用softmax进行分类。VGG利用池化层达到将特征图尺寸缩小一倍,通道数增加一倍的目的。
VGG采用33的卷积核,但是两个卷积层叠加可以使感受野达到55,同时两层卷积拥有两个激活函数也增加了非线性度。
PyTorch VGG16经典网络架构
from torch import nn
import torch
class VGG(nn.Module):
def __init__(self, num_classes=1000):
super(VGG, self).__init__()
layers = []
in_dim = 3
out_dim = 64
#循环构造卷积层,一共有13个卷积层
for i in range(13):
layers += [nn.Conv2d(in_dim, out_dim, 3, 1, 1), nn.ReLU(inplace=True)]
in_dim = out_dim
#在第2,4,7,10,13层卷积层后增加池化层
if i==1 or i==3 or i==6 or i==9 or i==12:
layers += [nn.MaxPool2d(2, 2)]
#第10个卷积前后通道数保持一致,其余加倍
if i!=9:
out_dim*=2
self.features = nn.Sequential(*layers)
#三个全连接层,包括ReLU和Dropout层
self.classifier = nn.Sequential(nn.Linear(512*7*7, 4096),