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)
)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiahcck
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22