【动手学习pytorch笔记】12.VGG

利用PyTorch实现VGG16 import torch import torch.nn as nn import torch.nn.functional as F class VGG16(nn.Module): def __init__(self): super(VGG16, self).__init__() # 3 * 224 * 224 ... 阅读详情

VGG

和AlexNet差不多,但VGG提出了块的概念,一个块包含几个卷积层,激活函数和池化层,使模型结构更加规范

模型结构
在这里插入图片描述

import torch
from torch import nn
from d2l import torch as d2l

def vgg_block(num_convs, in_channels, out_channels):
    layers = []
    for _ in range(num_convs):
        layers.append(nn.Conv2d(in_channels, out_channels,
                                kernel_size=3, padding=1))
        layers.append(nn.ReLU())
        in_channels = out_channels
    layers.append(nn.MaxPool2d(kernel_size=2,stride=2))
    return nn.Sequential(*layers)
conv_arch = ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512))

定义五个块,(卷积层数,输出通道数)

def vgg(conv_arch):
    conv_blks = []
    in_channels = 1
    # 卷积层部分
    for (num_convs, out_channels) in conv_arch:
        conv_blks.append(vgg_block(num_convs, in_channels, out_channels))
        in_channels = out_channels

    return nn.Sequential(
        *conv_blks, nn.Flatten(),
        # 全连接层部分
        nn.Linear(out_channels * 7 * 7, 4096), nn.ReLU(), nn.Dropout(0.5),
        nn.Linear(4096, 4096), nn.ReLU(), nn.Dropout(0.5),
        nn.Linear(4096, 10))

net = vgg(conv_arch)

全连接层输入维度out_channels * 7 * 7:因为原始图片224 * 224,经过五层卷积变成了7 * 7

看看每层情况

X = torch.randn(size=(1, 1, 224, 224))
for blk in net:
    X = blk(X)
    print(blk.__class__.__name__,'output shape:\t',X.shape)
Sequential output shape:	 torch.Size([1, 64, 112, 112])
Sequential output shape:	 torch.Size([1, 128, 56, 56])
Sequential output shape:	 torch.Size([1, 256, 28, 28])
Sequential output shape:	 torch.Size([1, 512, 14, 14])
Sequential output shape:	 torch.Size([1, 512, 7, 7])
Flatten output shape:	 torch.Size([1, 25088])
Linear output shape:	 torch.Size([1, 4096])
ReLU output shape:	 torch.Size([1, 4096])
Dropout output shape:	 torch.Size([1, 4096])
Linear output shape:	 torch.Size([1, 4096])
ReLU output shape:	 torch.Size([1, 4096])
Dropout output shape:	 torch.Size([1, 4096])
Linear output shape:	 torch.Size([1, 10])

VGG太大了,我们把每层的通道数除以4再构建一个网络吧

ratio = 4
small_conv_arch = [(pair[0], pair[1] // ratio) for pair in conv_arch]
net = vgg(small_conv_arch)

训练

lr, num_epochs, batch_size = 0.05, 10, 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

​

pytorch实战3:基于pytorch复现VGG16 阅读详情

相关推荐

pytorch学习笔记(二十五):VGG

1. VGG块 VGG块的组成规律是:连续使用数个相同的填充为1、窗口形状为3×33\times 33×3的卷积层后接上一个步幅为2、窗口形状为2×22\times 22×2的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。我们使用vgg_block函数来实现这个基础的VGG块,它可以指定卷积层的数量和输入输出通道数。 import time import torch from torch import nn, optim import sys sys.path.append("..")

逐梦er的博客 2374

Faster-RCNN全攻略

faster-RCNN配置与训练

angelfish91的博客 780

VGG一维、二维复现pytorch

VGG网络可以说是深度学习中最著名的网络之一,因为VGG网络模型只是纵向的延申,网络结构比较简单,就竖着堆就行了又能适应大部分任务,准确率还有保障。比起GoogLeNet,ResNet和DenseNet来简直就是小学生难度。链接: 原文链接 这几乎没什么好说的直接上干货 运行结果.........

一个学长的博客 3429

12 VGG,NIN

vgg 利用重复块的网络 与alexnet相比进步的地方在于出现了block结构,可以重复使用此结构来设计网络结构。 vgg_block连续使用连续使用数个相同的填充为1、窗口形状为3×33\times 33×3的卷积层后接上一个步幅为2、窗口形状为2×22\times 22×2的最大池化层。池化层可以使输入高和宽减半。 def vgg_block(num_convs, in_channels, out_channels): blk = [] for i in range(num_convs

qq_45654059的博客 283

【Pytorch学习】-- 使用pytorch自带模型 -- VGG16

Pytorch学习

Dylan's Blog 1万+

《动手学深度学习》(PyTorch版)

《动手学深度学习》PyTorch版深度学习简介起源发展成功案例特点小结练习参考文献 深度学习简介 你可能已经接触过编程,并开发过一两款程序。同时你可能读过关于深度学习或者机器学习的铺天盖地的报道,尽管很多时候它们被赋予了更广义的名字:人工智能。 实际上,或者说幸运的是,大部分程序并不需要深度学习或者是更广义上的人工智能技术。例如,如果我们要为一台微波炉编写一个用户界面,只需要一点儿工夫我们便能设计出十几个按钮以及一系列能精确描述微波炉在各种情况下的表现的规则。 再比如,假设我们要编写一个电子邮件客户端。这样

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 7515

深度学习:一篇你一定看的懂的VGG结构

深度学习:一篇你一定看的懂的VGG结构了解VGGNet卷积网络模型模型结构关于这个网络模型的一些思考 了解VGGNet卷积网络模型 2014年ILSVRC图像分类竞赛的第二名就是VGGNet网络模型。我们为什么要研究第二名的模型?因为在讲网络迁移到其他图片数据上进行应用时,VGGNet比第一名的GoogleNet有着更好的泛化性,尽管它有很多缺陷。 那么VGG网络长啥样呢?我们还是老规矩,先上一波...

LEEANG121的博客 8768

CloudCompare点云滤波实战:三种植被去除技术的对比与应用

本文详细对比了CloudCompare中三种植被去除技术(低通滤波、CSF滤波和坡度法)的实战应用与效果。通过具体案例和参数优化建议,帮助用户根据地形特征选择最佳滤波方法,提升点云数据处理精度和效率,特别适用于复杂场景下的植被去除需求。

weixin_30689307的博客 84

VGG-传统神经网络之巅峰

1. VGG简介 VGGNet是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以7.32%的错误率赢得了2014年ILSVRC分类任务的亚军(冠军由GoogLeNet以6.65%的错误率夺得)和25.32%的错误率夺得定位任务(Localization)的第一名(GoogLeNet错误率为26.44%),网络名称VGGNet取自该小组名缩写。VGGNet是首批把图像分类的错误率降低到10%以内模型,同时该网络所采用的3×33\times33×3

frighting_ing的博客 6391

超分算法 SwinIR: Image Restoration Using Swin Transformer

这篇文章结构比较简单,如果看过Swin-Transformer的话就没什么难点了。作者引入Swin-T结构应用于低级视觉任务,包括图像超分辨率重建、图像去噪、图像压缩伪影去除。网络由一个浅层特征提取模块、深层特征提取模块、重建模块构成。重建模块对不同的任务使用不同的结构。浅层特征提取就是一个3×3的卷积层。深层特征提取是k个RSTB块和一个卷积层构成。RSTB(Res- SwinIR: Image Restoration Using Swin Transformer[ICCV 2021]Abstract1.

qq_45122568的博客 1万+

ORB-SLAM3单目+IMU实战:从数据加载到位姿优化的完整流程解析

本文详细解析了ORB-SLAM3单目+IMU模式的完整实战流程。从EuRoC等数据集的数据格式准备、系统启动与数据流入口,到帧构建、IMU预积分、视觉-惯性联合初始化,再到基于运动模型的跟踪、局部地图优化及多线程协同,提供了从环境配置到代码解读的全面指南,并分享了参数调优与性能分析的实用调试经验。

weixin_29085151的博客 296

深度学习图像处理之VGG网络模型

VGG网络的原理是通过连续使用几个3x3的卷积核来代替较大卷积核(如7x7,5x5),这样可以在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。第一层卷积层:输入尺寸为[224, 224, 3],输出尺寸为[_, 64, 7, 7]。第三层卷积层:输入尺寸为[128, 7, 7],输出尺寸为[_, 256, 7, 7]。第二层卷积层:输入尺寸为[64, 7, 7],输出尺寸为[_, 128, 7, 7]。第五层卷积层:输入尺寸为[512],输出尺寸为[_, 512]。

算法与编程之美 617

别再为多相机标定头疼了!用VisionMaster统一坐标系的保姆级教程

本文详细介绍了使用VisionMaster平台解决多相机视觉系统中坐标系统一问题的完整流程。从标定板选择到N点标定,再到实战演练,提供了从原理到落地的全方位指导,帮助工程师高效解决多相机定位引导中的坐标偏差问题。

weixin_38168322的博客 632

PyTorch迁移学习入门——VGG16 图像分类

前言 迁移学习指的是保存已有问题的解决模型,并将其利用在其他不同但相关问题上。 比如说,用来辨识汽车的知识也可以被用来提升识别卡车的能力。很多情况下迁移学习能够简化我构建机器学习和深度学习模型,降低模型构建的难度,甚至取得不错的结果。 本文将针对一个小的图片数据集,使用PyTorch进行迁移学习演示,包括如何使用预训练模型,并将结果自己搭建的卷积神经网络模型进行性能比较。 预训练模型 预训练模型是...

Breeze 1万+

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1572

Darknet-Yolov3 移植过程

本教程面向使用寒武纪平台进行深度学习推理任务的开发者。针对当前主流检测网络darknet-yolov3,进行寒武纪平台的移植。开发者对照移植过程,能够利用寒武纪智能处理器设备完成多种场景的目标检测任务。本实验代码基于 Neuware 1.6.1 与 Python 2.7 环境。

shengyin714959的博客 438

pytorch——VGG网络搭建

目录 ????VGG介绍 ????那VGG它到底厉害在哪里呢? ????那什么是感受野呢? ????计算公式 ????问题一: ????问题二: ????网络图 ????pytorch搭建VGG网络 ????1. model.py ????神奇处理之处 ????2. train.py 3. predict.py ????注意 ????VGG介绍 VGG 在2014年由牛津大学著名研究组 VGG(Visual Geometry Group)提出, (论文地址:https

heart_6662的博客 7073

预测股票价格趋势:使用MATLAB进行股票价格预测

通过收集股票数据、数据预处理、构建预测模型以及可视化结果,我们可以利用MATLAB强大的计算和分析功能来预测股票价格的走势。然而,需要注意的是,股票市场具有高度复杂性和不确定性,预测结果仅供参考,并不构成投资建议。然而,借助计算机编程和数据分析工具,我们可以利用历史股价数据来建立模型,并预测未来的股票价格走势。首先,我们需要获取股票的历史价格数据。完成模型的拟合后,我们可以使用该模型来进行未来股票价格的预测。最后,我们可以使用MATLAB的绘图功能将预测的股票价格与实际股票价格进行对比,并进行可视化展示。

2301_79326588的博客 1018

pytorch Vgg16笔记

原本想直接跳过VGG,直接到PSEnet,但面试遇到很多使用VGG16的,于是静下心看看VGG网络到底是什么样的。 1 卷积核 又叫滤波器filter,在pytorch 卷积神经网络笔记,我已经写出了卷积计算的公式,但是卷积核的大小是多少呢?先看看卷积神经网络VGG16这么简单,为什么没人能说清? ,这里说卷积核一般用3*3.可是为什么呢?为什么倾向于使用3*3 小卷积核堆叠代替大卷积核 像素八...

warrah 南极狼 2607

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

PyTorch迁移VGG16

PyTorch迁移VGG16错误记录错误1 错误记录 错误1 ProtocolError: (‘Connection broken: OSError("(10054, ‘WSAECONNRESET’)",)’, OSError("(10054, ‘WSAECONNRESET’)",)) --------------------------------------------------------...

AlisaZqq 5689

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在Pytorch中使用VGG16进行迁移学习

什么是迁移学习?我们总是被告知“熟能生巧”,我们被要求在不同领域练习大量问题,为期末考试做好准备。我们解决的问题越多,我们就越能更好地利用这些知识以解决新问题。如果有一种方法可以应用相同的...

深度学习与计算机视觉 4601

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

动手学习VGG16

VGG 论文 《Very Deep Convolutional Networks for Large-Scale Image Recognition》 论文地址:https://arxiv.org/abs/1409.1556 使用重复元素的网络(VGG) 以学习VGG的收获、论文的复现二大部分,简述VGG16网络。 学习VGG的收获 VGG网络明确指出并实践证明了,浅而大的卷积核不如深而小的卷积核。 假设卷积块a、b的输入输出维度相同(不妨设维度=C),其中卷积块a(1个7 * 7的卷积层),卷积块b

weixin_49529683的博客 5371

PyTorch实现VGG

import numpy as np import torch from torch import nn from torch.autograd import Variable 定义VGG的block VGG几乎全部使用3x3的卷积核,以及2x2的池化层,使用小的卷积核进行多层堆叠和一个大的卷积核感受野是相同的,同时VGG小的卷积核还能减少参数,具有更深的结构。 def vgg_block(nu...

远方 1万+

【Pytorch学习笔记】模型模块09——VGG详解

创新价值首个证明网络深度显著提升精度的模型统一架构设计成为后续ResNet等模型的基线工程实践要点优先使用预训练模型加速开发全连接层参数过多,可替换为全局平均池化小数据集建议冻结卷积层+微调分类器局限与改进计算效率低于ResNet、MobileNet等新架构实际部署时可转换为全卷积网络减少计算量torchvision.models.vgg源码预训练权重配置。

qq_50040241的博客 909

pytorch中VGG网络的源码解读

一,简单介绍VGG网络 VGG网络是由多个卷积神经网络堆叠而成的分类网络。分为几类:VGG11,VGG13,VGG16,VGG19。结构如下图: VGG11,13,16,19这些数字表示VGG网络中的卷积层+全连接层的个数。 同样从上图我们也可以看到,每个VGG都有5个卷积block,其中卷积层的个数从1个~3个不等。 二,VGG源码 在源码中可供外界直接调用的vgg网络接口有...

ZJE 6256
上一篇: 【动手学习pytorch笔记】11.AlexNet分类fashion_mnist
下一篇: 【动手学习pytorch笔记】13.NiN
YMK_0
博客等级 码龄10年 78粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值