iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python深度学习pytorch神经网络块的网络之VGG
  • 176
分享到

Python深度学习pytorch神经网络块的网络之VGG

2024-04-02 19:04:59 176人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录VGG块VGG网络训练模型与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似,神经网络结构的设计也逐渐变得更加抽象。研究人员开始从单个神经元的角度思考问题,发展到整个层

与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似,神经网络结构的设计也逐渐变得更加抽象。研究人员开始从单个神经元的角度思考问题,发展到整个层次,现在又转向模块,重复各层的模式。

使用块的想法首先出现在牛津大学的视觉几何组(visualgeometry Group)(VGG)的VGG网络中。通过使用循环和子程序,可以很容易地在任何现代深度学习框架的代码中实现这些重复的结构。

VGG块

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

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

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

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

而一个VGG块与之类似,由一系列卷积层组成,后面再加上用于空间下采样的最大汇聚层。

在最初的VGG论文中,作者使用了带有 3 × 3卷积核、填充为1(保持高度和宽度)的卷积层,和带有 2 × 2 池化窗口、步幅为2(每个块后的分辨率减半)的最大汇聚层。

在下面的代码中,我们定义了一个名为vgg_block的函数来实现VGG块。

该函数有三个参数,分别对应于卷积层的数量num_convs、输入通道的数量in_channels和输出通道的数量out_channels。


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))
		leyers.append(nn.ReLU())
		in_channels = out_channels
	layers.append(nn.MaxPool2d(kernel_size=2, stride=2))
	return nn.Sequential(*layers)

VGG网络

与AlexNet、LeNet一样,VGG网络可以分为两个部分:第一部分主要由卷积层和汇聚层组成,第二部分由全连接层组成。如下图所示:

在这里插入图片描述

VGG神经网络连续连接上图的几个VGG块(在vgg_block函数中定义)。其中有超参数变量conv_arch。该变量指定了每个VGG块里的卷积层的个数和输出通道数。全连接模块则与AlexNet中的相同。

原始VGG网络中有5个卷积块,其中前两个块各有一个卷积层,后三个块包含两个卷积层。第一个模块有64个输出通道,每个后续模块将输出通道数量翻倍,直到数字达到512。由于该网络使用8个卷积层和3个全连接层,因此它通常被称为VGG-11。


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

下面的代码实现了VGG-11。可以通过在conv_arch上执行for循环来简单实现。


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_cannels, 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])

我们在每个块的高度和宽度减半,最终高度和宽度都为7。最后再展平表示,送入全连接层处理。

训练模型

由于VGG-11比AlexNet计算量更大,因此我们构建了一个通道数较少的网络,足够用于训练Fashion-MNIST数据集。


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

除了使用略高的学习率外,模型训练过程与AlexNet类似。


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.175, train axx 0.935, test acc 0.917
2559.6 examples/sec on cuda:0

在这里插入图片描述

以上就是python神经网络块的网络之VGG深度学习的详细内容,更多关于Python神经网络VGG块的网络的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python深度学习pytorch神经网络块的网络之VGG

本文链接: https://www.lsjlt.com/news/137742.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python深度学习pytorch神经网络块的网络之VGG
    目录VGG块VGG网络训练模型与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似,神经网络结构的设计也逐渐变得更加抽象。研究人员开始从单个神经元的角度思考问题,发展到整个层...
    99+
    2022-11-12
  • Python Pytorch深度学习之神经网络
    目录一、简介二、神经网络训练过程2、通过调用net.parameters()返回模型可训练的参数3、迭代整个输入4、调用反向传播5、计算损失值6、反向传播梯度7、更新神经网络参数总结...
    99+
    2022-11-12
  • Python深度学习pytorch卷积神经网络LeNet
    目录LeNet模型训练不变性 在本节中,我们将介绍LeNet,它是最早发布的卷积神经网络之一。这个模型是由AT&T贝尔实验室的研究院Yann LeCun在1989年提出的(并...
    99+
    2022-11-12
  • Python深度学习神经网络残差块
    目录ResNet模型训练模型 ResNet沿用VGG完整的KaTeX parse error: Undefined control sequence: \time at posit...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络汇聚层理解
    目录最大汇聚层和平均汇聚层填充和步幅多个通道我们的机器学习任务通常会跟全局图像的问题有关(例如,“图像是否包含一只猫呢?”),所以我们最后一层的神经元应该对整个输入的全局敏感。通过逐...
    99+
    2022-11-12
  • Pytorch深度学习经典卷积神经网络resnet模块训练
    目录前言一、resnet二、resnet网络结构三、resnet181.导包2.残差模块2.通道数翻倍残差模块3.rensnet18模块4.数据测试5.损失函数,优化器6.加载数据集...
    99+
    2022-11-11
  • Python深度学习之实现卷积神经网络
    目录一、卷积神经网络二、网络架构三、卷积四、卷积层五、在Keras中构建卷积层六、池化层七、全连接层八、Python实现卷积神经网络九、总结一、卷积神经网络 Yann LeCun 和...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络Dropout应用详解解
    目录扰动的鲁棒性实践中的dropout简洁实现扰动的鲁棒性 在之前我们讨论权重衰减(L2​正则化)时看到的那样,参数的范数也代表了一种有用的简单性度量。简单性的另一个有用...
    99+
    2022-11-12
  • Pytorch 使用Google Colab训练神经网络深度学习
    目录学习前言什么是Google Colab相关链接利用Colab进行训练一、数据集与预训练权重的上传1、数据集的上传2、预训练权重的上传二、打开Colab并配置环境1、笔记本的创建2...
    99+
    2022-11-10
  • Pytorch深度学习经典卷积神经网络resnet模块实例分析
    这篇文章主要介绍“Pytorch深度学习经典卷积神经网络resnet模块实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Pytorch深度学习经典卷积神经网络resnet模块实例分析”文章能帮...
    99+
    2023-06-30
  • Python深度学习理解pytorch神经网络批量归一化
    目录训练深层网络为什么要批量归一化层呢?批量归一化层全连接层卷积层预测过程中的批量归一化使用批量归一化层的LeNet简明实现争议训练深层神经网络是十分困难的,特别是在较短的实践内使他...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络填充和步幅的理解
    目录填充步幅 上图中,输入的高度和宽度都为3,卷积核的高度和宽度都为2,生成的输出表征的维度为 2 × 2 2\times2 2×2。从上图可看出卷积的输出形状取决于输入形状和卷积核...
    99+
    2022-11-12
  • Python深度学习神经网络基本原理
    目录神经网络梯度下降法神经网络 梯度下降法 在详细了解梯度下降的算法之前,我们先看看相关的一些概念。     1. 步长(Learning rate):步长决定了在梯度下降迭...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络多输入多输出通道
    目录多输入通道多输出通道 1×1卷积层虽然每个图像具有多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来指示红、绿和蓝。但是到目前为止,我们仅展示了单个输入和单个输出...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络图像卷积运算详解
    目录互相关运算卷积层特征映射由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例。 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cros...
    99+
    2022-11-12
  • python机器学习之神经网络
    手写数字识别算法 import pandas as pd import numpy as np from sklearn.neural_network import MLPReg...
    99+
    2022-11-12
  • Python深度学习TensorFlow神经网络基础概括
    目录一、基础理论1、TensorFlow2、TensorFlow过程1、构建图阶段2、执行图阶段(会话)二、TensorFlow实例(执行加法)1、构造静态图1-1、创建数据(张量)...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络多层感知机简洁实现
    我们可以通过高级API更简洁地实现多层感知机。 import torch from torch import nn from d2l import torch as d2l ...
    99+
    2022-11-12
  • pytorch之深度神经网络概念全面整理
    目录1、神经网络训练过程2、基础概念2.1数学知识2.1.1导数2.1.2 梯度2.2前向传播和反向传播3、数据预处理手段3.1 归一化  (normalization)3...
    99+
    2022-11-12
  • 深度学习实验3 - 卷积神经网络
    文章目录 实验要求数据集定义1 手写二维卷积1.1 自定义卷积通道1.2 自定义卷积层1.3 添加卷积层导模块中1.4 定义超参数1.5 初始化模型、损失函数、优化器1.6 定义模型训练和测试...
    99+
    2023-09-02
    深度学习 cnn python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作