![](https://img-blog.csdnimg.cn/20191208190659677.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动手学深度学习-TF2.0(读书笔记)
文章平均质量分 96
读书笔记:结合《动手学深度学习》及 tensorflow 2.0,对深度学习基础进行简单的梳理。
Fiona-Dong
这个作者很懒,什么都没留下…
展开
-
(八)计算机视觉 -- 8 全卷积网络(FCN)
8. 全卷积网络(FCN)上一节介绍了,可以基于语义分割对图像中的每个像素进行类别预测。全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换。与之前介绍的卷积神经网络有所不同,全卷积网络通过转置卷积(transposed convolution)层将中间层特征图的高和宽变换回输入图像的尺寸,从而令预测结果与输入图像在空间维(高和宽)上一一对应:给定空间维上的位置,通道维的输出即该位置对应像素的类别预测。8.1 转置卷积层顾转载 2020-12-06 12:09:59 · 1136 阅读 · 0 评论 -
(八)计算机视觉 -- 7 语义分割和数据集
7. 语义分割和数据集在前几节讨论的目标检测问题中,一直使用方形边界框来标注和预测图像中的目标。本节将探讨语义分割(semantic segmentation)问题,它关注如何将图像分割成属于不同语义类别的区域。值得一提的是,这些语义区域的标注和预测都是像素级的。下图展示了语义分割中图像有关狗、猫和背景的标签:由此可见,与目标检测相比,语义分割标注的像素级的边框显然更加精细。9.1 图像分割和实例分割计算机视觉领域还有2个与语义分割相似的重要问题,即:图像分割(image seg转载 2020-11-22 14:59:57 · 926 阅读 · 0 评论 -
(八)计算机视觉 -- 6 区域卷积神经网络(R-CNN)系列
6. 区域卷积神经网络(R-CNN)系列区域卷积神经网络(region-based CNN / regions with CNN features,R-CNN)是将深度模型应用于目标检测的开创性工作之一。本节将介绍R-CNN和它的一系列改进方法(模型设计思路):快速的R-CNN(Fast R-CNN)、更快的R-CNN(Faster R-CNN)以及掩码R-CNN(Mask R-CNN)。6.1 R-CNNR-CNN首先对图像选取若干提议区域(如锚框也是一种选取方法)并标注它们的类别和边界框(如转载 2020-11-15 13:16:19 · 2266 阅读 · 0 评论 -
(八)计算机视觉 -- 5 多尺度目标检测
5. 多尺度目标检测在 锚框 一节中,实验以输入图像的每个像素为中心生成多个锚框。这些锚框是对输入图像不同区域的采样。然而,如果以图像每个像素为中心都生成锚框,很容易生成过多锚框而造成计算量过大。例如,假设输入图像的高和宽分别为561像素和728像素,如果以每个像素为中心生成5个不同形状的锚框,那么一张图像上则需要标注并预测200多万个锚框(561×728×5)。减少锚框的个数并不难。一种简单的方法是:在输入图像中均匀采样一小部分像素,并以采样的像素为中心生成锚框。此外,在不同尺度下,可以生转载 2020-11-08 10:00:47 · 1049 阅读 · 0 评论 -
(八)计算机视觉 -- 4 锚框
4. 锚框目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含感兴趣的目标,并调整区域边缘从而更准确地预测目标的真实边界框(ground-truth bounding box)。不同的模型使用的区域采样方法可能不同。这里介绍其中的一种:它以每个像素为中心生成多个大小和宽高比(aspect ratio)不同的边界框。这些边界框被称为锚框(anchor box)。4.1 生成多个锚框假设输入图像高为h、宽为w,分别以图像的每个像素为中心生成不同形状的锚框。设大小为 s∈(0,1转载 2020-11-01 13:02:57 · 4036 阅读 · 2 评论 -
(八)计算机视觉 -- 3 目标检测和边界框
3. 目标检测和边界框在图像分类任务中,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像中存在多个感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,将这类任务称为目标检测(object detection)或物体检测。目标检测在多个领域中被广泛使用,例如:在无人驾驶中,需要通过识别拍摄到的视频图像里的车辆、行人、道路和障碍的位置来规划行进线路。机器人常通过该任务来检测感兴趣的目标。安防领域需要检测异常目标,如歹徒或者炸弹。转载 2020-10-31 22:33:15 · 1275 阅读 · 0 评论 -
(四)卷积神经网络 -- 12 稠密连接网络(DenseNet)
12. 稠密连接网络(DenseNet)ResNet中的跨层连接设计引申出了数个后续工作,稠密连接网络(DenseNet)就是其中之一。DenseNet与ResNet的主要区别,如下图所示:图中将部分前后相邻的运算抽象为模块A和模块B。与ResNet的主要区别在于:DenseNet里模块B的输出,并非是ResNet那样和模块A的输出相加,而是在通道维上连结。由此,模块A的输出可以直接传入模块B后面的层。在这个设计里,模块A直接跟模块B后面的所有层连接在了一起。这也是它被称为“稠密连接”转载 2020-10-25 18:26:34 · 1811 阅读 · 0 评论 -
(四)卷积神经网络 -- 11 残差网络(ResNet)
11. 残差网络(ResNet)问题:对神经网络模型添加新的层,充分训练后的模型是否只可能更有效地降低训练误差?理论上,如果能将新添加的层训练成恒等映射 f(x)=xf(x)=xf(x)=x,新模型和原模型将同样有效。由于新模型可能得出更优的解来拟合训练数据集,因此添加层似乎更容易降低训练误差。然而在实践中,添加过多的层后训练误差往往不降反升。即使利用批量归一化带来的数值稳定性使训练深层模型更加容易,该问题仍然存在。针对这一问题,何恺明等人提出了残差网络(ResNet)。它在2015年的Ima转载 2020-10-25 17:07:08 · 4083 阅读 · 0 评论 -
(四)卷积神经网络 -- 10 批量归一化
10. 批量归一化对于 “Kaggle比赛:预测房价” 的场景,可以对输入数据做标准化处理,使得:处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近:这往往更容易训练出有效的模型。通常来说,数据标准化预处理对于浅层模型就足够有效了。随着模型训练的进行,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化。但对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的更新依然很容易造成靠近输出层输出的剧烈变化。这种计算数值的不稳定性通常导致难转载 2020-10-25 15:31:52 · 2334 阅读 · 0 评论 -
(四)卷积神经网络 -- 9 含并行连结的网络(GoogLeNet)
9. 含并行连结的网络(GoogLeNet)2014年的ImageNet图像识别挑战赛中,GoogLeNet的网络结构大放异彩。GoogLeNet吸收了NiN中网络串联网络的思想,并在此基础上做了很大的改进。在随后的几年里,研究人员对GoogLeNet进行了数次改进,本节将介绍这个模型系列的第一个版本。9.1 Inception 块GoogLeNet中的基础卷积块称作Inception块。与上一节介绍的NiN块相比,这个基础块在结构上更加复杂,如下图所示:由此可见,Inception转载 2020-10-22 23:03:36 · 1294 阅读 · 0 评论 -
(四)卷积神经网络 -- 8 网络中的网络(NiN)
8. 网络中的网络(NiN)前文所述的LeNet、AlexNet和VGG,在设计上的共同点是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet和VGG对LeNet的改进,主要在于:如何对卷积层模块和全连接层模块,加宽(增加通道数)和加深。网络中的网络(NiN)提出了另一个思路:通过串联多个由卷积层和“全连接”层构成的小网络,来构建一个深层网络。8.1 NiN块卷积层的输入和输出通常是四维数组(样本,通道,高,宽),而全连接层的输入和输出则转载 2020-10-18 17:11:48 · 359 阅读 · 0 评论 -
(四)卷积神经网络 -- 7 使用重复元素的网络(VGG)
7. 使用重复元素的网络(VGG)关于AlexNet改进:AlexNet在LeNet的基础上增加了3个卷积层,同时,对卷积窗口、输出通道数和构造顺序均做了大量的调整。局限性:虽然AlexNet指明了深度卷积神经网络可以取得出色的结果,但并没有提供简单的规则以指导后来的研究者如何设计新的网络。VGG提出了可以通过重复使用简单的基础块来构建深度模型的思路。其名称来源于论文作者所在的实验室Visual Geometry Group。7.1 VGG块组成规律:连续使用数个相同的填充为1、窗口转载 2020-10-13 23:23:56 · 600 阅读 · 0 评论 -
(八)计算机视觉 -- 1 图像增广
1. 图像增广大规模数据集是成功应用深度神经网络的前提。图像增广(image augmentation)技术:通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本。存在以下两点作用:(1) 扩大训练数据集的规模。(2) 随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。例如,对图像进行不同方式的裁剪,使感兴趣的物体出现在不同位置,从而减轻模型对物体出现位置的依赖性;调整亮度、色彩等因素来降低模型对色彩的敏感度。1.1 函数定义import numpy转载 2020-09-12 15:05:52 · 1497 阅读 · 0 评论 -
(六)自然语言处理 -- 1 词嵌入(word2vec)
1. 词嵌入(word2vec)相关背景知识,参见 Word2Vec-知其然知其所以然 博客的学习笔记。自然语言是一套用来表达含义的复杂系统,其中,词是表义的基本单元。顾名思义,词向量是用来表示词的向量,也可视作词的特征向量或表征。将词映射为实数域向量的技术称作词嵌入(word embedding)。近年来,词嵌入已逐渐成为自然语言处理的基础知识。1.1 one-hot vs word2vec假设词典中不同词的数量(词典大小)为NNN,每个词可以和从0到N−1N-1N−1的连续整数一一对应。转载 2020-09-06 17:38:04 · 375 阅读 · 0 评论 -
(五)循环神经网络 -- 9 双向循环神经网络
10. 双向循环神经网络之前介绍的循环神经网络模型,都是假设当前时间步是由前面的较早时间步的序列决定的,因此它们都将信息通过隐藏状态从前往后传递。有时候,当前时间步也可能由后面时间步决定。例如,当我们写下一个句子时,可能会根据句子后面的词来修改句子前面的用词。双向循环神经网络,通过增加从后往前传递信息的隐藏层来更灵活地处理这类信息。一个含单隐藏层的双向循环神经网络的架构,如下图所示:具体来说,给定时间步ttt的小批量输入Xt∈Rn×d\boldsymbol{X}_t \in \mathb转载 2020-08-02 11:23:10 · 571 阅读 · 0 评论 -
(五)循环神经网络 -- 8 深度循环神经网络
8. 深度循环神经网络本章目前为止介绍的循环神经网络,仅有一个单向的隐藏层。而在深度学习应用中,通常会涉及含有多个隐藏层的循环神经网络,也称作深度循环神经网络。对于一个有LLL个隐藏层的深度循环神经网络,每个隐藏状态不断传递至当前层的下一时间步和当前时间步的下一层,如下图所示:具体来说,在时间步ttt里,设小批量输入Xt∈Rn×d\boldsymbol{X}_t \in \mathbb{R}^{n \times d}Xt∈Rn×d(样本数为nnn,输入个数为ddd),第ℓ\ellℓ隐藏层(ℓ转载 2020-08-02 09:31:19 · 319 阅读 · 0 评论 -
(五)循环神经网络 -- 7 长短期记忆(LSTM)
7. 长短期记忆(LSTM)本节将介绍另一种常用的门控循环神经网络:长短期记忆(long short-term memory,LSTM)。它比门控循环单元的结构稍微复杂一点。7.1 概念LSTM 中引入了3个门,即输入门(input gate)、遗忘门(forget gate)和输出门(output gate),以及与隐藏状态形状相同的记忆细胞(某些文献把记忆细胞当成一种特殊的隐藏状态),从而记录额外的信息。7.1.1 输入门、遗忘门和输出门与门控循环单元中的重置门和更新门一样,长短期记忆的门转载 2020-07-26 20:58:23 · 1075 阅读 · 0 评论 -
(五)循环神经网络 -- 6 门控循环单元(GRU)
6. 门控循环单元(GRU)上一节介绍了循环神经网络中的梯度计算方法。可以看出,当时间步较大或较小时,循环神经网络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减的问题。通常由于该原因,使得循环神经网络在实际中较难捕捉时间序列中时间步距离较大的依赖关系。门控循环神经网络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较大的依赖关系。它通过可以学习的门来控制信息的流动。其中,门控循环单元(gated recurre转载 2020-07-26 15:53:38 · 2441 阅读 · 0 评论 -
(五)循环神经网络 -- 5 通过时间反向传播
5. 通过时间反向传播在前一小节中,若不裁剪梯度,模型将无法正常训练。为了深刻理解这一现象,本节将介绍循环神经网络中梯度的计算和存储方法,即通过时间反向传播(back-propagation through time)。之前的 正向传播、反向传播和计算图 小节,介绍了神经网络中梯度计算的一般思路,并强调正向传播和反向传播相互依赖。正向传播在循环神经网络中比较直观,而通过时间反向传播其实是反向传播在循环神经网络中的具体应用。需要将循环神经网络按时间步展开,从而得到模型变量和参数之间的依赖关系,并依据链式法转载 2020-07-26 10:54:59 · 636 阅读 · 0 评论 -
(五)循环神经网络 -- 4 循环神经网络的实现
4. 循环神经网络的实现import numpy as npimport tensorflow as tfprint(tf.__version__)# 将「语言模型数据集」一节中的代码封装至d2lzh_tensorflow2中import d2lzh_tensorflow2 as d2l2.0.04.1 定义模型4.1.1 RNN模块Keras的RNN模块提供了循环神经网络的实现。构造一个含单隐藏层、隐藏单元个数为256的循环神经网络层rnn_layer,并对权重做初始化。代码示例转载 2020-07-19 21:21:57 · 645 阅读 · 0 评论 -
(五)循环神经网络 -- 3 语言模型数据集
3. 语言模型数据集本节将介绍如何预处理一个语言模型数据集,并将其转换成字符级循环神经网络所需要的输入格式。为此,收集了周杰伦从第一张专辑《Jay》到第十张专辑《跨时代》的歌词,并将在后几节应用循环神经网络来训练一个语言模型,并利用该模型来创作歌词。3.1 读取数据集import tensorflow as tfprint(tf.__version__)2.0.0(1) 读取数据集,查看前40个字符。with open('jaychou_lyrics.txt') as f: c转载 2020-07-15 23:25:53 · 561 阅读 · 0 评论 -
(五)循环神经网络 -- 2 循环神经网络
1. 循环神经网络上一节介绍的nnn元语法中,时间步ttt的词wtw_twt基于前面所有词的条件概率只考虑了最近时间步的n−1n-1n−1个词。如果要考虑比t−(n−1)t-(n-1)t−(n−1)更早时间步的词对wtw_twt的可能影响,我们需要增大nnn。但这样模型参数的数量将随之呈指数级增长。本节将介绍循环神经网络。它并非刚性地记忆所有固定长度的序列,而是通过隐藏状态来存储之前时间步的信息。首先我们回忆一下前面介绍过的多层感知机,然后描述如何添加隐藏状态来将它变成循环神经网络。1.1 语言转载 2020-07-11 17:13:35 · 492 阅读 · 0 评论 -
(五)循环神经网络 -- 1 语言模型
1. 语言模型语言模型(language model)是自然语言处理的重要技术。在自然语言处理中,最常见的数据是文本数据。可以把一段自然语言文本,看作一段离散的时间序列。假设一段长度为TTT的文本中的词依次为w1,w2,…,wTw_1, w_2, \ldots, w_Tw1,w2,…,wT,那么,在离散的时间序列中,wtw_twt(1≤t≤T1 \leq t \leq T1≤t≤T)可看作在时间步(time step)ttt的输出或标签。给定一个长度为TTT的词的序列w1,w2,…,wT转载 2020-07-09 23:47:26 · 265 阅读 · 0 评论 -
(四)卷积神经网络 -- 6 AlexNet
6. 深度卷积神经网络(AlexNet)在LeNet提出后的近20年,神经网络一度被其他机器学习方法超越,如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩,但在更大的真实数据集上的表现并不尽如人意,原因主要有以下两点:(1) 神经网络计算复杂。虽然20世纪90年代也有过一些针对神经网络的加速硬件,但并没有像之后GPU那样大量普及。因此,训练一个多通道、多层且有大量参数的卷积神经网络在当年很难完成。(2) 当年研究者还没有大量深入研究参数初始化和非凸优化算法等领域,使得复杂的神经网络的训转载 2020-07-05 17:30:55 · 652 阅读 · 0 评论 -
(四)卷积神经网络 -- 5 LeNet
5. 卷积神经网络(LeNet)构造一个含单隐藏层的多层感知机模型来对Fashion-MNIST数据集中的图像进行分类(每张图像高和宽均是28像素,将图像中的像素逐行展开,得到长度为784的向量,并输入全连接层中),这种分类方法存在一定的局限性,包括:(1) 图像在同一列邻近的像素在该向量中可能相距较远,它们构成的模式可能难以被模型识别。(2) 对于大尺寸的输入图像,使用全连接层容易导致模型过大,带来过于复杂的模型和过高的存储开销。假设输入是高和宽均为1,0001,0001,000像素的彩色照片(含转载 2020-07-05 11:49:34 · 2734 阅读 · 0 评论 -
(四)卷积神经网络 -- 4 池化层
4. 池化层在 二维卷积层 小节介绍的图像物体边缘检测的应用中,通过构造卷积核,精确地找到了像素变化的位置。设任意二维数组X的i行j列的元素为X[i, j]:若构造的卷积核输出Y[i, j]=1,则输入中X[i, j]和X[i, j+1]的数值不同,这可能意味着物体边缘通过这两个元素之间。但在实际图像中,我们感兴趣的物体不会总出现在固定位置:即使连续拍摄同一个物体,也极有可能出现像素位置上的偏移。由此,会导致同一个边缘对应的输出,可能出现在卷积输出Y中的不同位置,进而对后面的模式识别造成不便。为了缓转载 2020-06-27 16:21:59 · 806 阅读 · 0 评论 -
(四)卷积神经网络 -- 3 多输入通道和多输出通道
3. 多输入通道和多输出通道前两节中,示例所用的输入和输出都是二维数组,但真实数据通常具有更高的维度:如彩色图像,在高和宽2个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是hhh和www(像素),那么,它可以表示为一个3×h×w3\times h\times w3×h×w的多维数组。我们将大小为3的这一维,称为通道(channel)维。本节将介绍含多个输入通道或多个输出通道的卷积核。3.1 muti-channels in3.1.1 概念当输入数据含多个通道时,需要构转载 2020-06-27 12:52:32 · 5862 阅读 · 3 评论 -
(四)卷积神经网络 -- 2 填充和步幅
2. 填充和步幅在1.1小节的示例中,使用高和宽为3的输入与高和宽为2的卷积核得到高和宽为2的输出。一般来说,假设输入形状是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)由此可见,卷积层的输出形状由输入形状和卷积核窗口形状决定。本节将介绍卷积层的两个超参数:填充(p转载 2020-06-21 17:07:20 · 2670 阅读 · 3 评论 -
(四)卷积神经网络 -- 1 (2) 互相关运算 vs 卷积运算/特征图和感受野
1.2 互相关运算 vs 卷积运算为了便于说明问题,假设有一个filter和一张image,如下:互相关运算loop顺序:从左至右、从上至下。如上图所示,对图像中的蓝色区域进行cross-correlation运算,有:output=a∗A+b∗B+c∗C+d∗D+e∗E+f∗F+g∗G+h∗H+i∗Ioutput = a*A+b*B+c*C+d*D+e*E+f*F+g*G+h*H+i*Ioutput=a∗A+b∗B+c∗C+d∗D+e∗E+f∗F+g∗G+h∗H+i∗I卷积运算转载 2020-06-21 11:02:26 · 2075 阅读 · 0 评论 -
(四)卷积神经网络 -- 1 (1) 二维卷积层
1. 二维卷积层卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络。本章中,将介绍其中最常见的二维卷积层,包含高和宽两个空间维度,常用来处理图像数据。本节中,将介绍简单形式的二维卷积层的工作原理。1.1 two dimentional cross-correlation1.1.1 概念虽然卷积层得名于卷积(convolution)运算,但通常在卷积层中使用更加直观的互相关(cross-correlation)转载 2020-06-14 20:28:50 · 1349 阅读 · 0 评论 -
(三)深度学习计算 -- 5 GPU计算
5. 自本节将介绍如何自定义一个层,从而可以被重复调用。import tensorflow as tfimport numpy as np5.1 custom layer without parameters3.1.1 自定义层定义一个不含模型参数的自定义层:转载 2020-06-14 11:43:07 · 810 阅读 · 0 评论 -
(三)深度学习计算 -- 4 读取和存储
4. 读取和存储在实际场景中,可以把内存中训练好的模型参数存储在硬盘上供后续读取使用。import tensorflow as tfimport numpy as np4.1 load and save NDarray使用save函数和load函数分别进行存储和读取。# 创建tensorx = tf.ones(3)x输出:<tf.Tensor: id=2, shape=(3,), dtype=float32, numpy=array([1., 1., 1.], dtype=fl转载 2020-06-07 16:03:14 · 296 阅读 · 0 评论 -
(三)深度学习计算 -- 3 自定义层
3. 自定义层本节将介绍如何自定义一个层,从而可以被重复调用。import tensorflow as tfimport numpy as np3.1 custom layer without parameters定义一个不含模型参数的自定义层:class CenteredLayer(tf.keras.layers.Layer): def __init__(self): super().__init__() def call(self,inpu转载 2020-06-07 10:53:08 · 505 阅读 · 0 评论 -
(三)深度学习计算 -- 2 模型参数的访问、初始化和共享
2.模型参数的访问、初始化和共享import tensorflow as tf2.1 access parameters先定义一个含单隐藏层的多层感知机,用默认方式进行参数初始化,并做一次前向计算:# 构造net = tf.keras.models.Sequential()net.add(tf.keras.layers.Flatten())net.add(tf.keras.layers.Dense(units=256,activation=tf.nn.relu))net.add(tf.ke转载 2020-05-31 12:33:03 · 378 阅读 · 0 评论 -
(三)深度学习计算 -- 1 模型构造
1. 模型构造相比于先前代码示例中的 tf.keras.Sequential 类,tf.keras.Model 的模型构造方法更加灵活。1.1 build model from blocktf.keras.Model 类是 tf.keras 模块里提供的一个模型构造类,可以继承它来定义需要的模型。1.1.1 构造构造多层感知机,代码示例如下:import tensorflow as tfclass MLP(tf.keras.Model): def __init__(self):转载 2020-05-24 20:09:47 · 282 阅读 · 0 评论 -
(二)深度学习基础 -- 7 数值稳定性和模型初始化
7. 正在前几节中,使用了小批量随机梯度下降的优化算法来训练模型。实现中,只提供了模型的正向传播(7.1 正向传播7.1.1 正向传播的定义正向传播,是指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量(包括输出)。具体举例如下:...转载 2020-05-24 12:23:04 · 444 阅读 · 0 评论 -
(二)深度学习基础 -- 6 正向传播、反向传播和计算图
6. 正向传播、反向传播和计算图在前几节中,使用了小批量随机梯度下降的优化算法来训练模型。实现中,只提供了模型的正向传播(Forward propagation)的计算。鉴于基于反向传播(Backpropagation)算法的自动求梯度,极大简化了深度学习模型训练算法的实现,本节将使用数学和计算图(Computational graph)两个方式来描述正向传播和反向传播。具体来说,将以带L2L_2L2范数正则化的含单隐藏层的多层感知机为样例模型,解释正向传播和反向传播。6.1 正向传播6.1.转载 2020-05-17 19:11:13 · 724 阅读 · 0 评论 -
(二)深度学习基础 -- 5 (2) 丢弃法
5.2 丢弃法丢弃法存在不同的变体,本文特指倒置丢弃法(inverted dropout)。5.2.1 定义在 (二)深度学习基础 – 3 小节中,介绍了如下图所示的多层感知机:输入和输出个数分别为4和3,中间的隐藏层包含5个隐藏单元(hidden unit);多层感知机的层数为2,且隐藏层和输出层都为全连接层。多层感知机设隐藏单元为hih_ihi(i=1,…,5i=1, \ldots, 5i=1,…,5),激活函数为ϕ\phiϕ,输入为x1,…,x4x_1, \ldots, x_4转载 2020-05-17 14:28:38 · 292 阅读 · 0 评论 -
(二)深度学习基础 -- 5 (1) 降低过拟合
5. 降低过拟合在深度学习中,应对过拟合问题,大致有以下几种常用方法:增大训练集、权重衰减、丢弃法。其中,增大训练集可能会减轻过拟合,但是获取额外的训练数据往往代价高昂。本小节依次介绍权重衰减和丢弃法。5.1 权重衰减5.1.1 定义权重衰减等价于 L2L_2L2 范数正则化(regularization)。什么是L2L_2L2 范数正则化?L2L_2L2 范数正则化,是降低模型复杂度的方法之一,做法为:在模型原损失函数基础上,添加L2L_2L2范数惩罚项,从而得到训练所需要转载 2020-05-10 19:36:34 · 534 阅读 · 0 评论 -
(二)深度学习基础 -- 4 过拟合与欠拟合
4. 过拟合与欠拟合4.1 训练误差和泛化误差训练误差(training error):通常指模型在训练数据集上表现出的误差。泛化误差(generalization error):通常指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。训练误差和泛化误差的计算:线性回归,如平方损失函数;softmax回归,如交叉熵损失函数。4.2 欠拟合和过拟合...转载 2020-05-03 20:55:53 · 353 阅读 · 0 评论