vgg16-pytorch

基于pytorch实现VGG16模型

刚听完土哥的入门pytorch,试着写一个不完善的vgg16

VGG16具体的架构:
在这里插入图片描述
VGG16模型构建:

卷积池化后尺寸计算公式:
在这里插入图片描述
在这里插入图片描述
引入库:

from torch import nn
from torch.nn.modules.flatten import Flatten

dilation默认为1,计算第一个卷积的步长和填充:

224 =224+2xpadding-1x(3-1)-1/stride + 1
因为padding和stride都为整数,当padding=1,stride=1时,等式成立。

图片为3通道,输出后维64通道,卷积核为3x3,第一个卷积层为:

nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,stride=1,padding=1),
# 第二个尺寸不变,步长跟填充不变
nn.Conv2d(64,64,3,1,1),

在第一个池化这里,图片长宽都缩小二倍,当池化核为2x2时,取最显著的一个特征可达到这个标准,因此池化核为2,输入长和宽为224,输出长和宽为112,计算池化的步长

112 =224 + 2*padding - 1x(2-1-1/stride + 1
因为padding和stride都为整数,当padding=0,stride=2时,等式成立。padding默认为0可不写

在这里插入图片描述
因此,池化层为:

nn.MaxPool2d(kernel_size=2,stride=2)

完整模型代码如下:

from torch import nn
from torch.nn.modules.flatten import Flatten


class Vgg16(nn.Module):
    def __init__(self,category):
        super(Vgg16,self).__init__()
        self.model = nn.Sequential(
            nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,stride=1,padding=1),
            nn.Conv2d(64,64,3,1,1),
            nn.MaxPool2d(kernel_size=2,stride=2),
            nn.Conv2d(64,128,3,1,1),
            nn.Conv2d(128,128,3,1,1),
            nn.MaxPool2d(2,stride=2),
            nn.Conv2d(128,256,3,1,1),
            nn.Conv2d(256,256,3,1,1),
            nn.Conv2d(256,256,3,1,1),
            nn.MaxPool2d(2,stride=2),
            nn.Conv2d(256,512,3,1,1),
            nn.Conv2d(512,512,3,1,1),
            nn.Conv2d(512,512,3,1,1),
            nn.MaxPool2d(2,stride=2),
            nn.Conv2d(512, 512, 3, 1, 1),
            nn.Conv2d(512, 512, 3, 1, 1),
            nn.Conv2d(512, 512, 3, 1, 1),
            nn.MaxPool2d(2, stride=2),
            Flatten(),
            nn.Linear(512 * 7 * 7, 4096),
            nn.Linear(4096,4096),
            nn.Linear(4096, category)
        )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值