自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逐梦er的博客

到底什么是热爱 源于内心的脆弱 短暂的快活 像飞蛾扑火

  • 博客(32)
  • 收藏
  • 关注

原创 pytorch学习笔记(四十):目标检测与锚框

文章目录1.目标检测2. 边界框3.锚框3.1 生成多个锚框3.2 交并比3.3 标注训练集的锚框3.4 输出预测边界框1.目标检测在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通过识别拍摄到的视频图像里的车辆、行人、道路

2020-08-13 12:53:38 11052 21

原创 pytorch学习笔记(三十九):Fine-Tuning

文章目录微调1. 热狗识别2. 获取数据集3. 定义和初始化模型4. 微调模型微调假设我们想从图像中识别出不同种类的椅子,然后将购买链接推荐给用户。一种可能的方法是先找出100种常见的椅子,为每种椅子拍摄1,000张不同角度的图像,然后在收集到的图像数据集上训练一个分类模型。这个椅子数据集虽然可能比Fashion-MNIST数据集要庞大,但样本数仍然不及ImageNet数据集中样本数的十分之一。这可能会导致适用于ImageNet数据集的复杂模型在这个椅子数据集上过拟合。同时,因为数据量有限,最终训练得到

2020-08-13 11:22:49 2229 16

原创 pytorch学习笔记(三十八):Image-Augmentation

文章目录图像增广1. 常用的图像增广方法1.1 翻转和裁剪1.2 变化颜色1.3 叠加多个图像增广方法2. 使用图像增广训练模型2.1 使用图像增广训练模型小结图像增广图像增广(image augmentation) 技术通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。图像增广的另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。例如,我们可以对图像进行不同方式的裁剪,使感兴趣的物体出现在不同位置,从而减轻模型对物体出现位置的依赖性

2020-08-11 13:08:16 6068 21

原创 pytorch学习笔记(三十七):Adam

文章目录Adam算法1. 算法2. 从零开始实现3. 简洁实现小结Adam算法Adam算法在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均 [1]。下面我们来介绍这个算法。所以Adam算法可以看做是RMSProp算法与动量法的结合。1. 算法Adam算法使用了动量变量vt\boldsymbol{v}_tvt​和RMSProp算法中小批量随机梯度按元素平方的指数加权移动平均变量st\boldsymbol{s}_tst​,并在时间步0将它们中每个元素初始化为0。给定超参数0≤β1&

2020-08-10 13:34:35 6217 17

原创 pytorch学习笔记(三十七):RMSProp

文章目录RMSProp算法1. 算法2. 从零开始实现3. 简洁实现小结RMSProp算法AdaGrad算法中因为调整学习率时分母上的变量st\boldsymbol{s}_tst​一直在累加按元素平方的小批量随机梯度,所以目标函数自变量每个元素的学习率在迭代过程中一直在降低(或不变)。因此,当学习率在迭代早期降得较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率过小,可能较难找到一个有用的解。为了解决这一问题,RMSProp算法对AdaGrad算法做了一点小小的修改。1. 算法不同于Ad

2020-08-10 13:06:45 6816 20

原创 pytorch学习笔记(三十六):AdaGrad

文章目录AdaGrad算法1. 算法2. 特点3. 从零开始实现4. 简洁实现小结AdaGrad算法在之前介绍过的优化算法中,目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。举个例子,假设目标函数为fff,自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1​,x2​]⊤,该向量中每一个元素在迭代时都使用相同的学习率。例如,在学习率为η\etaη的梯度下降中,元素x1x_1x1​和x2x_2x2​都使用相同的学习率η\etaη来自我迭代:x1←x1−η∂f∂x1

2020-08-10 12:38:59 5877 15

原创 pytorch学习笔记(三十五):Momentum

文章目录动量法1. 梯度下降的问题2. 动量法2.1 指数加权移动平均2.2 由指数加权移动平均理解动量法3. 从零开始实现4. 简洁实现小结动量法目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向。因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量。然而,如果自变量的迭代方向仅仅取决于自变量当前位置,这可能会带来一些问题。1. 梯度下降的问题让我们考虑一个输入和输出分别为二维向量x=[x1,x2

2020-08-10 12:16:25 2007 15

原创 pytorch学习笔记(三十四):MiniBatch-SGD

文章目录小批量随机梯度下降1. 读取数据2. 从零开始实现3. 简洁实现小结小批量随机梯度下降在每一次迭代中,梯度下降使用整个训练数据集来计算梯度,因此它有时也被称为批量梯度下降(batch gradient descent)。而随机梯度下降在每次迭代中只随机采样一个样本来计算梯度。正如我们在前几章中所看到的,我们还可以在每轮迭代中随机均匀采样多个样本来组成一个小批量,然后使用这个小批量来计算梯度。下面就来描述小批量随机梯度下降。设目标函数f(x):Rd→Rf(\boldsymbol{x}): \ma

2020-08-09 13:48:40 3776 21

原创 pytorch学习笔记(三十三):梯度下降和随机梯度下降

文章目录前言1. 一维梯度下降2. 学习率3. 多维梯度下降4. 随机梯度下降小结前言在本节中,我们将介绍梯度下降(gradient descent)的工作原理。虽然梯度下降在深度学习中很少被直接使用,但理解梯度的意义以及沿着梯度反方向更新自变量可能降低目标函数值的原因是学习后续优化算法的基础。随后,我们将引出随机梯度下降(stochastic gradient descent)。1. 一维梯度下降我们先以简单的一维梯度下降为例,解释梯度下降算法可能降低目标函数值的原因。假设连续可导的函数f:R→R

2020-08-09 13:13:05 5341 19

原创 pytorch学习笔记(三十二):长短期记忆(LSTM)

文章目录1. 长短期记忆1.1 输入门、遗忘门和输出门1.2 候选记忆细胞1.3 记忆细胞1.4 隐藏状态2. 读取数据集3. 从零开始实现3.1 初始化模型参数4. 定义模型4.1 训练模型并创作歌词5 简洁实现小结本节将介绍另一种常用的门控循环神经网络:长短期记忆(long short-term memory,LSTM)。它比门控循环单元的结构稍微复杂一点。1. 长短期记忆LSTM 中引入了3个门,即输入门(input gate)、遗忘门(forget gate)和输出门(output gate)

2020-08-08 23:31:21 2441 13

原创 pytorch学习笔记(三十一):门控循环单元(GRU)

文章目录前言1. 门控循环单元1.1 重置门和更新门1.2 候选隐藏状态1.3 隐藏状态2. 读取数据集3. 从零开始实现3.1 初始化模型参数3.2 定义模型3.3 训练模型并创作歌词4. 简洁实现小结前言当时间步数较大或者时间步较小时,循环神经网络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减的问题。通常由于这个原因,循环神经网络在实际中较难捕捉时间序列中时间步距离较大的依赖关系。门控循环神经网络(gated recurrent neural network) 的提出

2020-08-08 12:24:17 4986 21

原创 pytorch学习笔记(三十):RNN反向传播计算图公式推导

前言本节将介绍循环神经网络中梯度的计算和存储方法,即 通过时间反向传播(back-propagation through time)。正向传播在循环神经网络中比较直观,而通过时间反向传播其实是反向传播在循环神经网络中的具体应用。我们需要将循环神经网络按时间步展开,从而得到模型变量和参数之间的依赖关系,并依据链式法则应用反向传播计算并存储梯度。1. 定义模型简单起见,我们考虑一个无偏差项的循环神经网络,且激活函数为恒等映射(ϕ(x)=x\phi(x)=xϕ(x)=x)。设时间步 ttt 的输入为单样本

2020-08-08 11:10:27 1217 21

原创 pytorch学习笔记(二十九):简洁实现循环神经网络

本节将使用PyTorch来更简洁地实现基于循环神经网络的语言模型。首先,我们读取周杰伦专辑歌词数据集。import timeimport mathimport numpy as npimport torchfrom torch import nn, optimimport torch.nn.functional as Fimport syssys.path.append("..") import d2lzh_pytorch as d2ldevice = torch.device('cu

2020-08-07 13:19:28 2187 17

原创 pytorch学习笔记(二十八):循环神经网络的从零开始实现

文章目录1. one-hot向量2. 初始化模型参数3. 定义模型4. 定义预测函数5. 裁剪梯度6. 困惑度7. 定义模型训练函数8. 训练模型并创作歌词小结在本节中,我们将从零开始实现一个基于字符级循环神经网络的语言模型,并在周杰伦专辑歌词数据集上训练一个模型来进行歌词创作。首先,我们读取周杰伦专辑歌词数据集:import timeimport mathimport numpy as npimport torchfrom torch import nn, optimimport torch

2020-08-07 12:37:34 1532 19

原创 pytorch学习笔记(二十七):Batch-Norm

文章目录前言1. 批量归一化层1.1 对全连接层做批量归一化1.2 对卷积层做批量归一化1.3 预测时的批量归一化2. 从零开始实现2.1 使用批量归一化层的LeNet3. 简洁实现小结前言本节我们介绍 批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易 。通常来说,数据标准化预处理对于浅层模型就足够有效了。随着模型训练的进行,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化。但对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的更新依然很容易造

2020-08-06 11:00:53 3080 22

原创 pytorch学习笔记(二十六):NIN

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

2020-08-05 20:47:19 549

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

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

2020-08-05 13:04:25 1967 23

原创 pytorch学习笔记(二十四):深度卷积神经网络(AlexNet)

1. AlexNetAlexNet与LeNet的设计理念非常相似,但也有显著的区别。第一,与相对较小的LeNet相比,AlexNet包含8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。下面我们来详细描述这些层的设计。AlexNet第一层中的卷积窗口形状是11×1111\times1111×11。因为ImageNet中绝大多数图像的高和宽均比MNIST图像的高和宽大10倍以上,ImageNet图像的物体占用更多的像素,所以需要更大的卷积窗口来捕获物体。第二层中的卷积窗口形状减小到5×5

2020-08-05 11:32:20 1966 14

原创 pytorch学习笔记(二十三):卷积神经网络(LeNet)

LeNet使用多层感知机构造一个含单隐藏层的多层感知机模型来对Fashion-MNIST数据集中的图像进行分类。每张图像高和宽均是28像素。我们将图像中的像素逐行展开,得到长度为784的向量,并输入进全连接层中。然而,这种分类方法有一定的局限性。图像在同一列邻近的像素在这个向量中可能相距较远。它们构成的模式可能难以被模型识别。对于大尺寸的输入图像,使用全连接层容易造成模型过大。假设输入是高和宽均为1000像素的彩色照片(含3个通道)。即使全连接层输出个数仍是256,该层权重参数的形状是3,000,0

2020-08-05 10:44:44 1827 16

原创 pytorch学习笔记(二十二):Pooling

文章目录1. 二维最大池化层和平均池化层2. 填充和步幅3. 多通道小结实际图像里,我们感兴趣的物体不会总出现在固定位置:即使我们连续拍摄同一个物体也极有可能出现像素位置上的偏移。这会导致同一个边缘对应的输出可能出现在卷积输出Y中的不同位置,进而对后面的模式识别造成不便。在本节中我们介绍池化(pooling)层,它的提出是为了缓解卷积层对位置的过度敏感性。1. 二维最大池化层和平均池化层同卷积层一样,池化层每次对输入数据的一个固定形状窗口(又称池化窗口)中的元素计算输出。不同于卷积层里计算输入和核的

2020-08-04 12:24:07 4801 19

原创 pytorch学习笔记(二十一):Channels

很多真实数据的维度经常更高。例如,彩色图像在高和宽2个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是hhh和www(像素),那么它可以表示为一个3×h×w3\times h\times w3×h×w的多维数组。我们将大小为3的这一维称为通道(channel)维。本节我们将介绍含多个输入通道或多个输出通道的卷积核。1. 多输入通道当输入数据含多个通道时,我们需要构造一个输入通道数与输入数据的通道数相同的卷积核,从而能够与含多通道的输入数据做互相关运算。假设输入数据的通道数为cic_

2020-08-04 11:52:21 4077 18

原创 pytorch学习笔记(二十):Padding-And-Strides

假设输入形状是nh×nwn_h\times n_wnh​×nw​,卷积核窗口形状是kh×kwk_h\times k_wkh​×kw​,那么输出形状将会是(nh−kh+1)×(nw−kw+1).(n_h-k_h+1) \times (n_w-k_w+1).(nh​−kh​+1)×(nw​−kw​+1).所以卷积层的输出形状由输入形状和卷积核窗口形状决定。本节我们将介绍卷积层的两个超参数,即填充和步幅。它们可以对给定形状的输入和卷积核改变输出形状。1. 填充填充(padding)是指在输入高和宽的两侧填

2020-08-04 11:29:22 743 22

原创 pytorch学习笔记(十九):二维卷积层

文章目录1. 二维互相关运算2. 二维卷积层3. 图像中物体边缘检测4. 通过数据学习核数组卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络。本章中介绍的卷积神经网络均使用最常见的二维卷积层。它有高和宽两个空间维度,常用来处理图像数据。本节中,我们将介绍简单形式的二维卷积层的工作原理。1. 二维互相关运算虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的互相关(cross-cor

2020-08-04 10:29:27 3721 22

原创 pytorch学习笔记(十八):Use-Gpu

在本节中,我们将介绍如何使用单块NVIDIA GPU来计算。所以需要确保已经安装好了PyTorch GPU版本。准备工作都完成后,下面就可以通过nvidia-smi命令来查看显卡信息了。!nvidia-smi # 对Linux/macOS用户有效输出:Sun Mar 17 14:59:57 2019 +-----------------------------------------------------------------------------+| NVIDIA-SMI

2020-08-03 18:44:59 4702 17

原创 pytorch学习笔记(十七):Read-Write

文章目录1. 读写Tensor2. 读写模型2.1 state_dict2.2 保存和加载模型1. 保存和加载`state_dict`(推荐方式)2. 保存和加载整个模型小结在实际中,我们有时需要把训练好的模型部署到很多不同的设备。在这种情况下,我们可以把内存中训练好的模型参数存储在硬盘上供后续读取使用。1. 读写Tensor我们可以直接使用save函数和load函数分别存储和读取Tensor。save使用Python的pickle实用程序将对象进行序列化,然后将序列化的对象保存到disk,使用sav

2020-08-03 18:42:08 1006 16

原创 pytorch学习笔记(十六):Parameters

文章目录1. 访问模型参数2. 初始化模型参数3. 自定义初始化方法4. 共享模型参数小结本节将深入讲解如何访问和初始化模型参数,以及如何在多个层之间共享同一份模型参数。我们先定义含单隐藏层的多层感知机。我们使用默认方式初始化它的参数,并做一次前向计算。在这里我们从nn中导入了init模块,它包含了多种模型初始化方法。import torchfrom torch import nnfrom torch.nn import initnet = nn.Sequential(nn.Linear(4,

2020-08-03 12:33:52 6492 20

原创 pytorch学习笔记(十五):模型构造

文章目录1. 继承Module类来构造模型2. Module的子类2.1 Sequential类2.2 ModuleList类2.3 ModuleDict类3. 构造复杂的模型小结这里我们介绍一种基于Module类的模型构造方法:它让模型构造更加灵活。1. 继承Module类来构造模型Module类是nn模块里提供的一个模型构造类,是所有神经网络模块的基类,我们可以继承它来定义我们想要的模型。下面继承Module类构造本节开头提到的多层感知机。这里定义的MLP类重载了Module类的__init__函

2020-08-03 11:04:18 1066 22

原创 pytorch学习笔记(十四):实战Kaggle比赛——房价预测

文章目录1. Kaggle比赛2. 获取和读取数据集3. 预处理数据4. 训练模型5. KKK折交叉验证6. 模型选择7. 预测并在Kaggle提交结果1. Kaggle比赛Kaggle是一个著名的供机器学习爱好者交流的平台。图3.7展示了Kaggle网站的首页。为了便于提交结果,需要注册Kaggle账号。我们可以在房价预测比赛的网页上了解比赛信息和参赛者成绩,也可以下载数据集并提交自己的预测结果。该比赛的网页地址是 https://www.kaggle.com/c/house-prices-adv

2020-08-02 17:12:10 3676 34

原创 pytorch学习笔记(十三):Dropout

文章目录1. 方法2. 从零开始实现2.1 定义模型参数2.2 定义模型2.3 训练和测试模型3. 简洁实现小结除了前一节介绍的权重衰减以外,深度学习模型常常使用丢弃法(dropout)来应对过拟合问题。1. 方法这里有一个单隐藏层的多层感知机。其中输入个数为4,隐藏单元个数为5,且隐藏单元hih_ihi​(i=1,…,5i=1, \ldots, 5i=1,…,5)的计算表达式为hi=ϕ(x1w1i+x2w2i+x3w3i+x4w4i+bi)h_i = \phi\left(x_1 w_{1i} +

2020-08-02 11:52:21 5137 18

原创 pytorch学习笔记(十二):权重衰减

权重衰减等价于 L2L_2L2​ 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。我们先描述L2L_2L2​范数正则化,再解释它为何又称权重衰减。L2L_2L2​范数正则化在模型原损失函数基础上添加L2L_2L2​范数惩罚项,从而得到训练所需要最小化的函数。L2L_2L2​范数惩罚项指的是模型权重参数每个元素的平方和与一个正的常数的乘积。以3.

2020-08-02 10:13:41 3862 18

原创 pytorch学习笔记(十一):pytorch实现多层感知机

下面我们使用PyTorch来实现上一节中的多层感知机。首先导入所需的包或模块。import torchfrom torch import nnfrom torch.nn import initimport numpy as npimport syssys.path.append("..") import d2lzh_pytorch as d2l1. 定义模型隐藏层单元个数为256,并使用ReLU函数作为激活函数。num_inputs, num_outputs, num_hiddens

2020-08-01 13:11:46 3227 16

原创 pytorch学习笔记(十):MLP

文章目录1. 隐藏层2. 激活函数2.1 ReLU函数2.2 sigmoid函数2.3 tanh函数3 多层感知机4. 代码实现MLP4.1 获取和读取数据4.2 定义模型参数4.3 定义激活函数4.4 定义模型4.5 定义损失函数4.6 训练模型小结1. 隐藏层多层感知机(multilayer perceptron, MLP) 在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层之间。图3.3展示了一个多层感知机的神经网络图,它含有一个隐藏层,该层中有5个隐

2020-08-01 13:07:04 9288 15

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除