2 栗子好好吃

尚未进行身份认证

我要认证

向来心是看客心,奈何人是剧中人

等级
TA的排名 2w+

[pytorch、学习] - 5.9 含并行连结的网络(GoogLeNet)

参考(https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter05_CNN/5.9_googlenet)5.9 含并行连结的网络(GoogLeNet)在2014年的ImageNet图像识别挑战赛中,一个名叫GoogLeNet的网络结构大放异彩。它虽然在名字上向LeNet致敬,但在网络结构上已经很难看到LeNet的影子。GoogLeNet吸收了NiN中网络串联网络的思想,并在此基础上做了很大改进。在随后的几年里,研究人员对GoogLeNet进行了数次改进,本

2020-07-09 10:05:53

[pytorch、学习] - 5.8 网络中的网络(NiN)

参考5.8 网络中的网络(NiN)前几节介绍的LeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet和VGG对LeNet的改进主要在于如何对这两个模块加宽(增加通道数)和加深。本节我们介绍网络中的网络(NiN)。它提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。5.8.1 NiN块我们知道,卷积层的输入和输出通常是四维数组(样本, 通道, 高, 宽),而全连接层的

2020-07-08 10:43:29

[pytorch、学习] - 5.7 使用重复元素的网络(VGG)

参考5.7 使用重复元素的网络(VGG)AlexNet在LeNet的基础上增加了3个卷积层。但AlexNet作者对它们的卷积窗口、输出通道数和构造顺序均做了大量的调整。虽然AlexNet指明了深度卷积神经网络可以取得出色的结果,但并没有提供简单的规则以指导后来的研究者如何设计新的网络。我们将在本章的后续几节里介绍几种不同的深度网络设计思路。下面介绍VGG5.7.1 VGG块VGG块的组成规律是:连续使用数个相同的填充为1、窗口形状为3×3的卷积层后接上一个步幅为2、窗口形状为2×2的最大池化层。卷

2020-07-08 10:37:17

[pytorch、学习] - 5.6 深度卷积神经网络(AlexNet)

参考5.6 深度卷积神经网络(AlexNet)在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意。一方面,神经网络计算复杂。虽然20世纪90年代也有过一些针对神经网络的加速硬件,但并没有像之后GPU那样大量普及。因此,训练一个多通道、多层和有大量参数的卷积神经网络在当年很难完成。另一方面,当年研究者还没有大量深入研究参数初始化和非凸优化算法等诸多领域,导致复杂的神经网络的训练通常

2020-07-08 10:33:25

[pytorch、学习] - 5.5 卷积神经网络(LeNet)

参考5.5 卷积神经网络(LeNet)卷积层尝试解决两个问题:卷积层保留输入形状,使图像的像素在高和宽两个方向上的相关性均可能被有效识别;卷积层通过滑动窗口将同一卷积核和不同位置的输入重复计算,从而避免参数尺寸过大。5.5.1 LeNet模型LeNet分为卷积层块和全连接层块两个部分.卷积层块的基本单位是卷积层后接最大池化层: 卷积层用来识别图像里的空间模式(线条和物体局部),之后最大池化用来降低卷积层对位置的敏感性。卷积层块由两个这样的基本单位重复堆叠构成。在卷积层块中,每个卷积层都

2020-07-08 10:26:01

[pytorch、学习] - 5.4 池化层

参考5.4 池化层在本节中我们介绍池化(pooling)层,它的提出是为了缓解卷积层对位置的过度敏感性。5.4.1 二维最大池化层和平均池化层池化层直接计算池化窗口内元素的最大值或者平均值。该运算也叫做最大池化层或平均池化层。下面把池化层的前向计算实现在pool2d函数里。import torchimport torch.nn as nndef pool2d(X, pool_size, mode="max"): X = X.float() p_h, p_w = pool_

2020-07-08 10:22:38

[pytorch、学习] - 5.3 多输入通道和多输出通道

参考5.3 多输入通道和多输出通道前面两节里我们用到的输入和输出都是二维数组,但真实数据的维度经常更高。例如,彩色图像在高和宽2个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是h和w(像素),那么它可以表示为一个3 * h * w的多维数组。我们将大小为3的这一维称为通道(channel)维。本节将介绍含多个输入通道或多个输出通道的卷积核。5.3.1 多输入通道接下来我们实现含多个输入通道的互相关运算。我们只需要对每个通道做互相关运算,然后通过add_n函数来进行累加im

2020-07-08 10:17:53

[pytorch、学习] - 5.2 填充和步幅

参考5.2 填充和步幅5.2.1 填充填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素)。图5.2里我们在原输入高和宽的两侧分别添加了值为0的元素,使得输入高和宽从3变成了5,并导致输出高和宽由2增加到4。图5.2中的阴影部分为第一个输出元素及其计算所使用的输入和核数组元素: 0 * 0 + 0 * 1 + 0 * 2 + 0 * 3 = 0.下面的例子里,我们创建一个高和宽为3的二维卷积层,然后设输入高和宽的填充数分别为1。给定一个高和宽为8的输入,我们发现输出的高和宽也是8

2020-07-07 11:04:53

[pytorch、学习] - 5.1 二维卷积层

参考5.1 二维卷积层卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络。本章介绍的卷积神经网络均使用最常见的二维卷积层。它有高和宽两个空间维度,常用来处理图像数据。本节中,我们将介绍简单形式的二维卷积层的工作原理。5.1.1 二维互相关运算# 将上述过程实现在 corr2d 函数里.它接受输入数组 X 与核数组 K,并输出数组 Yimport torch from torch import nndef

2020-07-07 10:59:43

[pytorch、学习] - 4.6 GPU计算

参考4.6 GPU计算到目前为止,我们一直使用CPU进行计算。对复杂的神经网络和大规模数据来说,使用CPU来计算可能不够高效。在本节中,将要介绍如何使用单块NIVIDA GPU进行计算4.6.1 计算设备PyTorch可以指定用来存储和计算的设备,如果用内存的CPU或者显存的GPU。默认情况下,PyTorch会将数据创建在内存,然后利用GPU来计算。用torch.cuda.is_available()查看GPU是否可用:import torchfrom torch import nnto

2020-07-07 10:53:24

[pytorch、学习] - 4.5 读取和存储

参考4.5 读取和存储到目前为止,我们介绍了如何处理数据以及如何构建、训练和测试深度学习模型。然而在实际中,我们有时需要把训练好的模型部署到很多不同的设备。在这种情况下,我们可以把内存中训练好的模型参数存储在硬盘上供后续读取使用。4.5.1 读写tensor我们可以直接使用save函数和load函数分别存储和读取Tensor。下面的例子创建了Tensor变量x,并将其存储在文件名为x.pt的文件里.import torchimport torch.nn as nnx = torch.one

2020-07-07 10:48:32

[pytorch、学习] - 4.4 自定义层

参考4.4 自定义层深度学习的一个魅力在于神经网络中各式各样的层,例如全连接层和后面章节将要用介绍的卷积层、池化层与循环层。虽然PyTorch提供了大量常用的层,但有时候我们依然希望自定义层。本节将介绍如何使用Module来自定义层,从而可以被重复调用。4.4.1 不含模型参数的自定义层我们先介绍如何定义一个不含模型参数的自定义层。import torchfrom torch import nnclass CenteredLayer(nn.Module): def __init__(

2020-07-07 10:40:51

[pytorch、学习] - 4.2 模型参数的访问、初始化和共享

参考4.2 模型参数的访问、初始化和共享在3.3节(线性回归的简洁实现)中,我们通过init模块来初始化模型的参数。我们也介绍了访问模型参数的简单方法。本节将深入讲解如何访问和初始化模型参数,以及如何在多个层之间共享同一份模型参数。import torchfrom torch import nnfrom torch.nn import initnet = nn.Sequential(nn.Linear(4,3), nn.ReLU(), nn.Linear(3, 1))print(net)

2020-07-07 10:37:00

[pytorch、学习] - 4.1 模型构造

参考4.1 模型构造让我们回顾以下多重感知机的简洁实现中包含单隐藏层的多重感知机的实现方法。我们首先构造Sequential实例,然后依次添加两个全连接层。其中第一层的输出大小为256,即隐藏层单元个数是256;第二层的输出大小为10,即输出层单元个数是10.4.1.1 继承Module类来构造模型Module类是nn模块里提供的一个模型构造类,是所有神经网络模块的基类,我们可以继承它来定义我们想要的模型。下面继承Module类构造本节开头提到的多层感知机。这里定义的MLP类重载了Module类的_

2020-07-07 10:31:49

[pytorch、学习] - 3.13 丢弃法

参考3.13 丢弃法过拟合问题的另一种解决办法是丢弃法。当对隐藏层使用丢弃法时,隐藏单元有一定概率被丢弃。3.12.1 方法3.13.2 从零开始实现import torchimport torch.nn as nnimport numpy as npimport syssys.path.append("..") import d2lzh_pytorch as d2ldef dropout(X, drop_prob): X = X.float() assert 0

2020-07-07 10:25:47

[pytorch、学习] - 3.12 权重衰减

参考3.12 权重衰减本节介绍应对过拟合的常用方法3.12.1 方法正则化通过为模型损失函数添加惩罚项使学出的模型参数更小,是应对过拟合的常用手段。3.12.2 高维线性回归实验import torchimport torch.nn as nnimport numpy as npimport syssys.path.append("..") import d2lzh_pytorch as d2ln_train, n_test, num_inputs = 20, 100, 200

2020-07-07 10:20:39

[pytorch、学习] - 3.11 模型选择、欠拟合和过拟合

参考3.11 模型选择、欠拟合和过拟合3.11.1 训练误差和泛化误差在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。让我们以高考为例来直观地解释训练误差和泛化误

2020-07-07 10:16:49

[pytorch、学习] - 3.10 多重感知机的简洁实现

参考3.10. 多重感知机的简洁实现import torchfrom torch import nnfrom torch.nn import initimport numpy as npimport syssys.path.append("..") import d2lzh_pytorch as d2l3.10.1. 定义模型num_inputs, num_outputs, num_hiddens = 784, 10, 256# 参数都存在 net.parameters()中net

2020-07-07 10:09:40

[pytorch、学习] - 3.9 多重感知机的从零开始实现

参考3.9 多重感知机的从零开始实现import torchimport numpy as npimport syssys.path.append("..")import d2lzh_pytorch as d2l3.9.1. 获取和读取数据batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)3.9.2. 定义模型参数num_inputs, num_outputs, num_hi

2020-07-06 10:02:11

[pytorch、学习] - 3.7 softmax回归的简洁实现

参考3.7. softmax回归的简洁实现使用pytorch实现softmaximport torchfrom torch import nnfrom torch.nn import initimport numpy as npimport syssys.path.append("..")import d2lzh_pytorch as d2l3.7.1. 获取和读取数据batch_size = 256train_iter, test_iter = d2l.load_data_fas

2020-07-06 09:54:34

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。