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

news2025/2/6 3:12:29

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

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix升级后图形文字不显示

原版本升级后版本6.4.76.4.13 问题现象 更新小版本后zabbix数据图形都有,只有下方文字不显示 处理方式 下载win字体,根据自己选择,上传至/usr/share/zabbix/assets/fonts目录下,修改文件名为jianti.ttf 修改默认字体配置文件…

新项目应该选mongodb还是postgresql?

文章目录 MongoDBPostgreSQL大数据处理时的优势对比实际使用经验 选择MongoDB还是PostgreSQL作为新项目的数据库,主要取决于项目的具体需求、数据模型、应用场景以及团队熟悉程度等因素。下面将从几个关键角度对两者进行对比分析。 MongoDB 数据模型:Mo…

Django中的静态文件、路径、访问静态文件的方法

1.什么是静态文件 不能与服务器端做动态交互的文件都是静态文件 如:图片,css,js,音频,视频,html文件(部分) 2.静态文件配置 在 settings.py 中配置一下两项内容: 1.配置静态文件的访问路径 通过哪个url地址找静态文件 STATIC_URL ‘/static/’ 说…

zabbix 监控网络设备之 smnpwalk简单使用

安装: sudo yum install net-snmp net-snmp-utils 设备MIB文件查看OID; [rootzabbix ~]$snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.4.1.2011.6.139.12.1.5.7 SNMPv2-SMI::enterprises.2011.6.139.12.1.5.7.0 INTEGER: 62 所以命令也可以写成…

机器学习之特征选择(Feature Selection)

1 引言 特征提取和特征选择作为机器学习的重点内容,可以将原始数据转换为更能代表预测模型的潜在问题和特征的过程,可以通过挑选最相关的特征,提取特征和创造特征来实现。要想学习特征选择必然要了解什么是特征提取和特征创造,得…

李秘书讲写作告诉你,答辩状这样写才有说服力!你觉得呢?

李秘书讲写作告诉你,答辩状这样写才有说服力!你觉得呢? 答辩状是一种法律文书,用于对对方的指控或诉讼进行回应和反驳。为了让答辩状具有说服力,你需要清晰地陈述你的立场、提供证据,并以逻辑和事实为基础…

JS-31-错误传播

一、错误传播 如果代码发生了错误,又没有被try ... catch捕获,那么,程序执行流程会跳转到哪呢? 示例: function getLength(s) {return s.length; }function printLength() {console.log(getLength(abc)); // 3conso…

OpenHarmony轻量系统开发【2】源码下载和开发环境

2.1源码下载 关于源码下载的,读者可以直接查看官网: https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes 本文这里做下总结: (1)注册码云gitee账号。 (2)注册码云SSH公钥…

Springboot+Vue项目-基于Java+MySQL的校园周边美食探索及分享平台系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

一.shell基本知识

目录 1.1为什么学习和使用Shell编程 1.2什么是Shell 1.2.1 shell的起源 1.2.2shell的功能 1.3shell的分类 1.4作为程序设计的语言一—shell 1.5如何学好shell 1.6shell脚本的基本元素 1.7 shell脚本编写规范 1.8 shell脚本的执行方式 1.9 执行脚本的方法 1.10 shel…

ThinkPHP V5.1框架源码

源码下载地址:ThinkPHP V5.1.zip www WEB部署目录(或者子目录) ├─application 应用目录 │ ├─common 公共模块目录(可以更改) │ ├─module_name 模块目录 │ │ ├─common.php 模块函数文件 │ │ ├─controll…

首届《综合品酒师》培训规模创大世界基尼斯,云仓酒庄再上新台阶

近日,云仓酒庄举办的首届《综合品酒师》培训活动圆满落幕,其盛大的规模与参与度不仅成功刷新了大世界基尼斯纪录,更为云仓酒庄的发展注入了新的活力与动能。这次培训不仅彰显了云仓酒庄在酒类培训领域的专业化与系统化,更为其未来…

vs配置opencv运行时“发生生成错误,是否继续并运行上次的成功生成”BUG解决办法

vs“发生生成错误,是否继续并运行上次的成功生成” 新手在用vs配置opencv时遇到这个错误时,容易无从下手解决。博主亲身经历很有可能是release/debug模式和配置文件不符的问题。 在配置【链接器】→【输入】→【附加依赖项】环节,编辑查看选择…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型(LLMs)的新发展,人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比,视频为有效的大规模预训练带来了独特的挑战,因为需要对其时空动态进行建模。 针对视频…

企业微信对接金蝶KIS生成总账凭证

客户介绍: 某集团企业是一家致力于打造更全面的农产业链条,生产更高品质的农业产品的国际现代化农业公司。集团布局四川、贵州、广东、中国香港、澳大利亚等地,业务涉足大肥牛交易平台、超级牧场、肉牛养殖、蜂产业、饲草、智能化装备、有机…

多模态之ALBEF—先对齐后融合,利用动量蒸馏学习视觉语言模型表征,学习细节理解与论文详细阅读:Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation (ALBEF)在融合之前对齐:利用动量蒸馏进行视觉与语言表示学习 Paper: arxiv.org/pdf/2107.07651.pdf Github: https://github.com/salesforce/…

【计算机毕业设计】游戏售卖网站——后附源码

🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…

基于springboot实现房屋租赁管理系统设计项目【项目源码+论文说明】

基于springboot实现房屋租赁管理系统设计演示 摘要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对房屋租赁信息管理混乱&…

Linux应用开发笔记(五)网络编程(二)多线程编程

文章目录 前言一、线程和进程1. 进程(Process)2. 线程(Thread)3. 二者的比较 二、多线程和多进程三. 代码编写1. 相关函数pthread_create( )函数pthread_exit( )函数pthread_join( )函数 2. 线程同步3. 互斥量4. 条件变量5. 实验代…

微服务之分布式链路追踪

一、概述 1.1背景 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最…