Pytorch:VGG16

article/2025/8/30 4:05:40
import torch
import torch.nn as nn
import torch.nn.functional as Fclass VGG16(nn.Module):def __init__(self):super(VGG16, self).__init__()#输入图片大小为:3 * 224 * 224    self.conv1_1 = nn.Conv2d(3, 64, 3) # 64 * 222 * 222                               (224 - 3 + 2*0)/1 + 1 = 222      self.conv1_2 = nn.Conv2d(64, 64, 3, padding=(1, 1)) # 64 * 222* 222               (222 - 3 + 2*1)/1 + 1 = 222self.maxpool1 = nn.MaxPool2d((2, 2), padding=(1, 1)) # pooling 64 * 112 * 112     (222 - 2 + 2*1)/2 + 1 = 112self.conv2_1 = nn.Conv2d(64, 128, 3) # 128 * 110 * 110                            (112 - 3 + 2*0)/1 + 1 =110self.conv2_2 = nn.Conv2d(128, 128, 3, padding=(1, 1)) # 128 * 110 * 110           (110 - 3 + 2*1)/1 + 1 =110self.maxpool2 = nn.MaxPool2d((2, 2), padding=(1, 1)) # pooling 128 * 56 * 56      (110 - 2 + 2*1)/2 + 1 = 56self.conv3_1 = nn.Conv2d(128, 256, 3) # 256 * 54 * 54                             (56 - 3 + 2*0)/1 + 1 = 54self.conv3_2 = nn.Conv2d(256, 256, 3, padding=(1, 1)) # 256 * 54 * 54             (54 - 3 + 2*1)/1 + 1 = 54self.conv3_3 = nn.Conv2d(256, 256, 3, padding=(1, 1)) # 256 * 54 * 54             (54 - 3 + 2*1)/1 + 1 = 54self.maxpool3 = nn.MaxPool2d((2, 2), padding=(1, 1)) # pooling 256 * 28 * 28      (54 - 2 + 2*1)/2 + 1 = 28self.conv4_1 = nn.Conv2d(256, 512, 3) # 512 * 26 * 26                             (28 - 3 + 2*0)/1 + 1 = 26self.conv4_2 = nn.Conv2d(512, 512, 3, padding=(1, 1)) # 512 * 26 * 26             (26 - 3 + 2*1)/1 + 1 = 26self.conv4_3 = nn.Conv2d(512, 512, 3, padding=(1, 1)) # 512 * 26 * 26             (26 - 3 + 2*1)/1 + 1 = 26self.maxpool4 = nn.MaxPool2d((2, 2), padding=(1, 1)) # pooling 512 * 14 * 14      (26 - 2 + 2*1)/2 + 1 = 14self.conv5_1 = nn.Conv2d(512, 512, 3) # 512 * 12 * 12                             (14 - 3 + 2*0)/1 + 1 = 12self.conv5_2 = nn.Conv2d(512, 512, 3, padding=(1, 1)) # 512 * 12 * 12             (12 - 3 + 2*1)/1 + 1 = 12 self.conv5_3 = nn.Conv2d(512, 512, 3, padding=(1, 1)) # 512 * 12 * 12             (12 - 3 + 2*1)/1 + 1 = 12self.maxpool5 = nn.MaxPool2d((2, 2), padding=(1, 1)) # pooling 512 * 7 * 7        (12 - 2 + 2*1)/2 + 1 =7# viewself.fc1 = nn.Linear(512 * 7 * 7, 4096)    #512 * 7 * 7 = 25088 ————> 4096self.fc2 = nn.Linear(4096, 4096)           #4096 ————> 4096self.fc3 = nn.Linear(4096, 1000)           #4096 ————> 1000# softmax 1 * 1 * 1000def forward(self, x):# x.size(0)即为batch_sizein_size = x.size(0)out = self.conv1_1(x) # 222out = F.relu(out)out = self.conv1_2(out) # 222out = F.relu(out)out = self.maxpool1(out) # 112out = self.conv2_1(out) # 110out = F.relu(out)out = self.conv2_2(out) # 110out = F.relu(out)out = self.maxpool2(out) # 56out = self.conv3_1(out) # 54out = F.relu(out)out = self.conv3_2(out) # 54out = F.relu(out)out = self.conv3_3(out) # 54out = F.relu(out)out = self.maxpool3(out) # 28out = self.conv4_1(out) # 26out = F.relu(out)out = self.conv4_2(out) # 26out = F.relu(out)out = self.conv4_3(out) # 26out = F.relu(out)out = self.maxpool4(out) # 14out = self.conv5_1(out) # 12out = F.relu(out)out = self.conv5_2(out) # 12out = F.relu(out)out = self.conv5_3(out) # 12out = F.relu(out)out = self.maxpool5(out) # 7# 展平out = out.view(in_size, -1)out = self.fc1(out)out = F.relu(out)out = self.fc2(out)out = F.relu(out)out = self.fc3(out)out = F.log_softmax(out, dim=1)return out
  1. 输入图像尺寸为224x224x3,经64个通道为3的3x3的卷积核,步长为1,padding=same填充,卷积两次,再经ReLU激活,输出的尺寸大小为224x224x64
  2. 经max pooling(最大化池化),滤波器为2x2,步长为2,图像尺寸减半,池化后的尺寸变为112x112x64
  3. 经128个3x3的卷积核,两次卷积,ReLU激活,尺寸变为112x112x128
  4. max pooling池化,尺寸变为56x56x128
  5. 经256个3x3的卷积核,三次卷积,ReLU激活,尺寸变为56x56x256
  6. max pooling池化,尺寸变为28x28x256
  7. 经512个3x3的卷积核,三次卷积,ReLU激活,尺寸变为28x28x512
  8. max pooling池化,尺寸变为14x14x512
  9. 经512个3x3的卷积核,三次卷积,ReLU,尺寸变为14x14x512
  10. max pooling池化,尺寸变为7x7x512
  11. 然后view(),将数据拉平成向量,变成一维51277=25088。
  12. 再经过两层1x1x4096,一层1x1x1000的全连接层(共三层),经ReLU激活
  13. 最后通过softmax输出1000个预测结果
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/SGeKUxkv.shtml

相关文章

深度学习之基于Tensorflow2.0实现VGG16网络

VGG系列的网络,在网络深度上相比于其之前的网络有了提升,VGG16与VGG19是VGG系列的代表,本次基于Tensorflow2.0实现VGG16网络。 1.VGG16 网络简介 VGG16网络模型在2014年ImageNet比赛上脱颖而出,取得了在分类任务上排名第二&…

CNN-VGG16

一张图片如何作为输入? 如下图,彩色图像有RGB三个色值通道,分别表示红、绿、蓝,每个通道内的像素可以用一个二维数组表示,数值代表0-255之间的像素值。假设一张900*600的彩色的图片,计算机里面可以用 (90…

基于VGG16的猫狗分类实战

1 使用卷积神经网络识别猫和狗数据集 1.1 理论基础 1.1.1 VGG架构 VGG16是由Karen Simonyan和Andrew Zisserman于2014年在论文“VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE SCALE IMAGE RECOGNITION”中提出的一种处理多分类、大范围图像识别问题的卷积神经网络架构&…

VGG16代码注释

原版代码在这:神经网络学习小记录52——Pytorch搭建孪生神经网络(Siamese network)比较图片相似性 VGG注释: import torch import torch.nn as nn from torchvision.models.utils import load_state_dict_from_urlclass VGG(nn…

VGG16网络结构

VGGNet模型有A-E五种结构网络,深度分别为11,11,13,16,19,其中VGG16和VGG19较为典型。VGG网络结构如下图所示。 VGG16介绍: 在卷积层1(conv3_64),卷积层2(con…

分类网络 VGG16

经典网络VGG16 结构 VGG中根据卷积核大小和卷积层数目的不同,可分为A,A-LRN,B,C,D,E共6个配置(ConvNet Configuration),其中以D,E两种配置较为常用,分别称为VGG16和VGG19。 下图给出了VGG的六种结构配置: 上图中&am…

分类网络:VGG16

VGG16网络的优点: 1.通过堆叠两层3x3的卷积核替代5x5的卷积核, 通过堆叠三层3x3的卷积核替代7x7的卷积核, 原因是拥有相同的感受野,且需要更少的参数:假设输入通道数为C, 则所需要的参数为: 三个3x3的卷积…

VGG16模型

VGG16模型很好的适用于分类和定位任务 其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。 1、结构简洁 VGG由5层卷积层、3层全连接层、softmax输出层构成,层与层之间使用max-pooling(最大化池)分开,所有…

VGG16网络结构与代码

VGG16总共有16层(不包括池化层),13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,采用pooling;再经过3次256个卷积核卷…

VGG16模型PyTorch实现

1.VGG16 网络简介 VGG16网络模型在2014年ImageNet比赛上脱颖而出,取得了在分类任务上排名第二,在定位任务上排名第一的好成绩。VGG16网络相比于之前的LexNet以及LeNet网络,在当时的网络层数上达到了空前的程度。 2.网络结构 3.创新点 ① 使…

CNN系列学习之VGG16

前言: CNN系列总结自己学习主流模型的笔记,从手写体的LeNet-5到VGG16再到历年的ImageNet大赛的冠军ResNet50,Inception V3,DenseNet等。重点总结每个网络的设计思想(为了解决什么问题),改进点(是怎么解决这…

vgg16猫狗识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:365天深度学习训练营-第8周:猫狗识别(训练营内部成员可读)🍖 原作者:K同学啊|接辅导、项目定制 我的环境&…

VGG16-keras 优化

VGG16-keras 优化 优化结果对比VGG16网络结构VGG16网络结构优化自定义loss训练预测 优化结果对比 原始VGG16 普通调优 使用预训练权重 VGG16网络结构 VGG16网络结构优化 1.增加正则化 2.使用BN/GN层(中间层数据的标准化) 3.使用dropout Net.py i…

VGG16论文解读

VGGNET VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用…

VGG16模型详解 and 代码搭建

目录 一. VGG 网络模型 二. 代码复现 1. 网络搭建 2.数据集制作(pkl) 3.源码地址 一. VGG 网络模型 Alexnet是卷积神经网络的开山之作,但是由于卷积核太大,移动步长大,无填充,所以14年提出的VGG网络解决了这一问题。而且VGG网…

动手学习VGG16

VGG 论文 《Very Deep Convolutional Networks for Large-Scale Image Recognition》 论文地址:https://arxiv.org/abs/1409.1556 使用重复元素的网络(VGG) 以学习VGG的收获、VGG16的复现二大部分,简述VGG16网络。 一. 学习VGG的收获 VGG网络明确指…

VGG16

VGG16模型的学习以及源码分析 part one 主要学习参考 pytorch 英文文档VGG16学习笔记VGG16网络原理分析与pytorch实现【深度学习】全面理解VGG16模型VGG模型的pytorch代码实现VGG16源代码详解【论文】 VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION p…

VGG16 - 用于分类和检测的卷积网络

VGG16是由牛津大学的K. Simonyan和A. Zisserman在“用于大规模图像识别的非常深卷积网络”的论文中提出的卷积神经网络模型。 该模型在ImageNet中实现了92.7%的前5个测试精度,这是属于1000个类的超过1400万张图像的数据集。它是ILSVRC-2014提交的着名模型…

VGG-16网络结构详解

VGG,又叫VGG-16,顾名思义就是有16层,包括13个卷积层和3个全连接层,是由Visual Geometry Group组的Simonyan和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型&…

经典卷积神经网络——VGG16

VGG16 前言一、VGG发展历程二、VGG网络模型三、VGG16代码详解1.VGG网络架构2.VGG16网络验证2.读取数据,进行数据增强3.训练模型,测试准确率 四、VGG缺点 前言 我们都知道Alexnet是卷积神经网络的开山之作,但是由于卷积核太大,移动…