李沐25_使用块的网络VGG——自学笔记

VGG架构

1.多个VGG块后接全连接层

2.不同次数的重复块得到不同的架构 VGG-16、VGG-19

3.更大更深的AlexNet

##经典卷积神经网络的基本组成部分是下面的这个序列:

1.带填充以保持分辨率的卷积层;

2.非线性激活函数,如ReLU;

3.汇聚层,如最大汇聚层。

代码实现VGG块

定义了一个名为vgg_block的函数来实现一个VGG块,3X3卷积核、填充为1(保持高度和宽度)的卷积层,和带有2X2汇聚窗口、步幅为2(每个块后的分辨率减半)的最大汇聚层。

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)

VGG网络

5大块:每一块相当于高宽减半.(卷积,通道数)

conv_arch = ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512))

VGG-11

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)

构建一个高度和宽度为224的单通道数据样本,以观察每个层输出的形状。

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-11比AlexNet计算量更大,因此我们构建了一个通道数较少的网络,足够用于训练Fashion-MNIST数据集

ratio = 4
small_conv_arch = [(pair[0], pair[1] // ratio) for pair in conv_arch] # 所有通道数都➗4,计算量减少16倍,但是计算时间更长
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())
loss 0.178, train acc 0.934, test acc 0.904
791.2 examples/sec on cuda:0

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/531823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【规划算法】A星 与 混合A星

理解概念: A星寻路算法详解(C实现 完整代码图片演示 )_a星算法-CSDN博客 A*算法图解_a*算法流程图-CSDN博客 A星(A*、A Star)路径规划算法详解(附MATLAB代码)_a星算法路径规划-CSDN博客 改进A*算法dwa 本文提出了一种改进的A*…

Tmux 使用笔记

Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。 本文记录个人使用 Tmux的命令。 1. tmux简介 命令行的典型使用方式是,打开一个终端窗口,连接计算机,在里面输入…

【刷题】备战蓝桥杯 — dfs 算法

送给大家一句话: 风度真美! 即使流泪,也要鼓掌, 即使失望,也要满怀希望。 ——刘宝增 dfs 算法 1 前言2 洛谷 P1030 [NOIP2001 普及组] 求先序排列题目描述算法思路 3 洛谷 P1294 高手去散步题目描述算法思路 4 蓝桥…

1.2.4 采用Java配置类管理Bean

本实战将演示如何使用Java配置类管理Bean,实现基于注解的IoC容器的配置。 创建新包 在net.huawei.spring根包里创建day04子包。 创建杀龙任务类 在day04子包里创建SlayDragonQuest类。在该类上不添加Component注解。 创建勇敢骑士类 在day04子包里创建BraveKnight…

HarmonyOS开发实例:【分布式数据管理】

介绍 本示例展示了在eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。 通过设备管理接口[ohos.distributedDeviceManager],实现设备之间的kvStore对象的数据传输交互,该对象拥有以下能力 ; 1、注册和解除注…

大话设计模式——17.状态模式(State Pattern)

简介 对象的行为依赖于它的状态(属性),可以根据状态的改变而改变相关行为。 UML图: 应用场景: 对象的行为取决于其状态,并且必须要在运行时刻根据状态而改变行为代码中包含大量与对象状态有关的条件语句 …

SMT用料全检抽检

下载地址百度网盘: https://pan.baidu.com/s/1kDn_l8P6ReC4Lj5tgt-v4w?pwd5y41 提取码:5y41 1、扫描输入车间线体 2、根据线体获取在线订单 3、选择(全检|抽检|换接新料)开始 4、根据提示扫描站位和料号核对 5、核对成功再扫描核对下一组

<-泛型->

1.泛型的概念 所谓泛型,就是允许在定义类, 接口 时通过一个"标识"表示类中某个属性的类型或者某个方法的返回值或形参类型.这个类型参数将在使用时确定. 2.举例 (1). 集合类在设计阶段/声明阶段不能确定这个容器到底存的是什么对象,所以在JDK…

✌2024/4/3—力扣—整数反转

代码实现: int reverse(int x) {long num 0;while (x ! 0) {num num * 10 x % 10;x x / 10;}if ((int)num ! num) {return 0;}return (int)num; }

第十四届蓝桥杯大赛软件赛省赛C/C++大学 B 组

第十四届蓝桥杯大赛软件赛省赛C/C大学 B 组 文章目录 第十四届蓝桥杯大赛软件赛省赛C/C大学 B 组1、日期统计2、01串的熵3、冶炼金属4、飞机降落5、接龙数列6、岛屿个数7、子串简写8、整数删除9、景区导游10、砍树 1、日期统计 分析: 本题的意思就是2023年一整年&a…

Docker容器嵌入式开发:在Ubuntu上配置Postman和flatpak

在 Ubuntu 上配置 Postman 可以通过 Snap 命令完成,以下是所有命令的总结: sudo snap install postmansudo snap install flatpak在 Ubuntu 上配置 Postman 和 Flatpak 非常简单。以下是一些简单的步骤: 配置 Flatpak 安装 Flatpak&#x…

unity 寻找隐藏节点 transform.find

由于习惯了godot 的路径寻找,学习unity的时候一直在找类似的方式。最终发现transform.find最相似。 但在寻找隐藏(inactive)的节点遇到了坑。 其实transform.find能不能找到隐藏节点是基于你在find中使用的是绝对路径还是相对路径。 绝对路…

【LAMMPS学习】八、基础知识(1.7) LAMMPS 与 MDI 库代码耦合

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

数据结构和算法:回溯

回溯算法 回溯算法(backtracking algorithm)是一种通过穷举来解决问题的方法,它的核心思想是从一个初始状态出发,暴力搜索所有可能的解决方案,当遇到正确的解则将其记录,直到找到解或者尝试了所有可能的选…

招聘小程序里可以展示详细的岗位信息,方便用户自行报名,省时省力

平台目前规定要通过招聘小程序进行报白。报白通过后就可以在直播间正常招聘了,但是必须挂载小程序,否则还是容易被警告限流。 招聘小程序里可以展示详细的岗位信息,方便用户自行报名,省时省力。 抖音直播招聘报白是一种通过直播…

Day36代码随想录(1刷) 贪心

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9示例 2: 输入: n 1234 输出: …

IPEX-LLM(原名BigDL-LLM)环境配置

IPEX-LLM 是一个为Intel XPU (包括CPU和GPU) 打造的轻量级大语言模型加速库&#xff0c;在Intel平台上具有广泛的模型支持、最低的延迟和最小的内存占用。 您可以使用 IPEX-LLM 运行任何 PyTorch 模型&#xff08;例如 HuggingFace transformers 模型&#xff09;。在运行过程中…

顺序表之队列

上一篇博客我们学习了栈的实现&#xff0c;这一篇我们继续学习队列&#xff0c;让我们开始吧&#xff01; 1.认识队列 1.概念&#xff1a;只允许在一端进行插入数据的操作&#xff0c;在另一端进行删除数据的操作的特殊想线性 表&#xff0c;队列具有先进先出…

Transformer详解和知识点总结

目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力&#xff08;Multi-head self-attention&#xff09; 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文&#xff1a;https://arxiv.org/abs/1706.03762 李沐B站视频&#xff1a;https://www.bilibi…

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…