TensorFlow2
文章平均质量分 86
炎武丶航
小菜鸟一枚
展开
-
深度学习之强化学习(1)强化学习案例
深度学习之强化学习(1)强化学习案例强化学习案例1. 平衡杆游戏2. 策略网络3. 梯度更新4. 平衡杆游戏实战完整代码人工智能=深度学习+强化学习——David Silver 强化学习时机器学习领域除有监督学习、无监督学习外的另一个研究分支,它主要利用智能体与环境进行交互,从而学习到能获得良好结果的策略。与有监督学习不同,强化学习的动作并没有明确的标注信息,只有来自环境的反馈的奖励信息,它通常具有一定的滞后性,用于反映动作的“好与坏”。 随着深度学习神经网络的兴起,强化学习这一领域也获得了蓬勃的发展原创 2021-10-14 21:18:22 · 14421 阅读 · 0 评论 -
深度学习之生成对抗网络(8)WGAN-GP实战
深度学习之生成对抗网络(8)WGAN-GP实战代码修改完整代码WGANWGAN_train代码修改 WGAN-GP模型可以在原来GAN代码实现的基础上仅做少量修改。WGAN-GP模型的判别器D的输出不再是样本类别的概率,输出不需要加Sigmoid激活函数。同时添加梯度惩罚项,实现如下:def gradient_penalty(discriminator, batch_x, fake_image): # 梯度惩罚项计算函数 batchsz = batch_x.shape[0]原创 2021-10-14 09:14:09 · 2280 阅读 · 0 评论 -
深度学习之生成对抗网络(7)WGAN原理
深度学习之生成对抗网络(7)WGAN原理1. JS散度的缺陷 WGAN算法从理论层面分析了GAN训练不稳定的原因,并提出了有效的解决方法。那么是什么原因导致了GAN训练如此不稳定呢?WGAN提出是因为JS散度在不重叠的分布ppp和qqq上的梯度曲面是恒定为0的。如下图所示。当分布p和q不重叠时,JS散度的梯度值始终为0,从而导致此时GAN的训练出现梯度弥散现象,参数长时间得不到更新,网络无法收敛。图1. JS散度出现梯度弥散现象 接下来我们将详细阐述JS散度的缺陷以及怎么解决此缺陷。1. JS散原创 2021-10-13 21:46:52 · 2893 阅读 · 1 评论 -
深度学习之生成对抗网络(6)GAN训练难题
深度学习之生成对抗网络(6)GAN训练难题1. 超参数敏感2. 模式崩塌 尽管从理论层面分析了GAN网络能够学习到数据的真实分布,但是在工程实现中,常常出现GAN网络训练困难的问题,主要体现在GAN模型对超参数较为敏感,需要精心挑选能使模型工作的超参数设定,同时也容易出现模式崩塌现象。1. 超参数敏感 超参数敏感是指网络的结构设定、学习率、初始化状态等超参数对网络的训练过程影响较大,微量的超参数调整将可能导致网络的训练结果截然不同。如下图所示,图(a)为GAN模型良好训练得到的生成样本,图(b)中的原创 2021-10-13 14:36:46 · 2387 阅读 · 1 评论 -
深度学习之生成对抗网络(5)纳什均衡
深度学习之生成对抗网络(5)纳什均衡1. 判别器状态2. 生成器状态 现在我们从理论层面进行分析,通过博弈学习的训练方式,生成器G和判别器D分别会达到什么平衡状态。具体地,我们将探索以下两个问题:固定G,D会收敛到什么最优状态D∗D^*D∗?在D达到最优状态D∗D^*D∗后,G会收敛到什么状态?首先我们通过xr∼pr(⋅)\boldsymbol x_r\sim p_r (\cdot)xr∼pr(⋅)一维正态分布的例子给出一个直观的解释。如下图所示,黑色虚线曲线代表了真实数据的分布pr(⋅)p原创 2021-10-13 14:32:00 · 1997 阅读 · 2 评论 -
深度学习之生成对抗网络(4)GAN变种
深度学习之生成对抗网络(4)GAN变种1. DCGAN2. InfoGAN3. CycleGAN4. WGAN5. Equal GAN6. Self-Attention GAN7. BigGAN参考文献 在原始的GAN论文中,Ian Goodfellow从理论层面分析了GAN网络的收敛性,并且在多个经典图片数据集上测试了图片生成的效果,如下图所示,其中(a)为MNIST数据,(b)为Toronto Face数据集,(c)、(d)为CIFAR10数据集。原始GAN图片生成效果[1] 可以看到,原始GA原创 2021-10-12 21:23:03 · 1185 阅读 · 0 评论 -
深度学习之生成对抗网络(3)DCGAN实战
深度学习之生成对抗网络(3)DCGAN实战1. 动漫图片数据集2. 生成器3. 判别器4. 训练与可视化判别网络生成网络网络训练5. 完整代码datasetGANGAN_train 本节我们来完成一个二次元动漫头像图片生成实战,参考DCGAN的网络结构,其中判别器D利用普通卷积层实现,生成器G利用转置卷积层实现,其网络结构如下图所示:DCGAN网络结构1. 动漫图片数据集 这里使用的是一组二次元动漫头像数据集[1][2],共51223张图片,无标注信息,图片主体已裁剪、对齐并统一缩放到96×96原创 2021-10-11 21:15:21 · 1878 阅读 · 2 评论 -
深度学习之生成对抗网络(2)GAN原理
深度学习之生成对抗网络(2)GAN原理1. 网络结构生成网络G(z)\text{G}(\boldsymbol z)G(z)判别网络D(x)\text{D}(\boldsymbol x)D(x)2. 网络训练3. 统一目标函数 现在我们来正式介绍生成对抗网络的网络结构和训练方法。1. 网络结构&esmp;生成对抗网络包含了两个子网络:生成网络(Generator,简称G)和判别网络(Discriminator,简称D),其中生成网络G负责学习样本的真实分布,判别网络D负责将生成网络采样的样本与原创 2021-10-10 21:23:10 · 376 阅读 · 0 评论 -
深度学习之生成对抗网络(1)博弈学习实例
深度学习之生成对抗网络(1)博弈学习实例博弈学习实例 在生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单,使用神经网络训练起来很稳定,生成的图片逼近度也较高,但是人眼还是可以很轻易地分辨出真实图片与及其生成的图片。 2014年,Unibersiteˊ\acute{e}eˊ de Montreˊ\acute{e}eˊal大学Yoshua Bengio(2019年图灵奖获得者)的学生Ian Goodfellow提出了生成原创 2021-10-10 10:28:59 · 1708 阅读 · 2 评论 -
深度学习之自编码器(5)VAE图片生成实战
深度学习之自编码器(5)VAE图片生成实战1. VAE模型2. Reparameterization技巧3. 网络训练4. 图片生成VAE图片生成实战完整代码 本节我们基于VAE模型实战Fashion MNIST图片的重建与生成。如下图所示,输入为Fashion MNIST图片向量,经过3个全连接层后得到隐向量z\boldsymbol zz的均值与方差,分别用两个输出节点数为20的全连接层表示,FC2的20个输出节点表示20个特征分布的均值向量μ\boldsymbol μμ,FC3的20个输出节点表示20原创 2021-10-10 09:34:35 · 6617 阅读 · 6 评论 -
深度学习之自编码器(4)变分自编码器
深度学习之自编码器(4)变分自编码器1. VAE原理 基本的自编码器本质上是学习输入x\boldsymbol xx和隐藏变量z\boldsymbol zz之间映射关系,它是一个判别模型(Discriminative model),并不是生成模型(Generative model)。那么能不能将自编码器调整为生成模型,方便地生成样本呢? 给定隐藏变量的分布P(z)\text{P}(\boldsymbol z)P(z),如果可以学习到条件概率分布P(x∣z)\text{P}(\boldsymbol x|\b原创 2021-10-09 21:25:12 · 410 阅读 · 0 评论 -
深度学习之自编码器(3)自编码器变种
深度学习之自编码器(3)自编码器变种1. Denoising Auto-Encoder2. Dropout Auto-Encoder3. Adversarial Auto-Encoder 一般而言,自编码器网络训练较为稳定,但是由于损失函数是直接度量重建样本与真实样本的底层特征之间的距离,而不是评价重建样本的逼真度和多样性等抽象指标,因此在某些任务上效果一般,如图片重建,容易出现重建图片边缘模糊,逼真度相对真实图片仍有不小差距。为了尝试让自编码器学习到数据的真是分布,产生了一系列的自编码器变种网络。下面将原创 2021-10-08 21:42:17 · 515 阅读 · 0 评论 -
深度学习之自编码器(2)Fashion MNIST图片重建实战
深度学习之自编码器(2)Fashion MNIST图片重建实战1. Fashion MNIST数据集2. 编码器3. 解码器4. 自编码器5. 网络训练6. 图片重建完整代码 自编码器算法原理非常简单,实现方便,训练也较稳定,相对于PCA算法,神经网络的强大表达能力可以学习到输入的高层抽象的隐层特征向量z\boldsymbol zz,同时也能够基于z\boldsymbol zz重建出输入。这里我们基于Fashion MNIST数据集进行图片重建实战。1. Fashion MNIST数据集 Fashi原创 2021-10-08 21:29:18 · 1997 阅读 · 7 评论 -
深度学习之自编码器(1)自编码器原理
深度学习之自编码器(1)自编码器原理自编码器原理 前面我们介绍了在给出样本及其标签的情况下,神经网络如何学习的算法,这类算法需要学习的是在给定样本x\boldsymbol xx下的条件概率P(y∣x)P(y|\boldsymbol x)P(y∣x)。在社交网络蓬勃发展的今天,获取海量的样本数据x\boldsymbol xx,如照片、语音、文本等,是相对容易的,但困难的是获取这些数据所获得的标签信息,例如机器翻译,除了收集源语言的对话文本外,还需要待翻译的目标语言文本数据。数据的标注工作目前主要还是依赖人的原创 2021-10-08 21:12:41 · 2025 阅读 · 0 评论 -
深度学习之循环神经网络(12)预训练的词向量
深度学习之循环神经网络(12)预训练的词向量 在情感分类任务时,Embedding层是从零开始训练的。实际上,对于文本处理任务来说,领域知识大部分是共享的,因此我们能够利用在其它任务上训练好的词向量来初始化Embedding层,完成领域知识迁移。基于预训练的Embedding层开始训练,少量样本时也能取得不错的效果。 我们以预训练的GloVe词向量为例,演示如何利用预训练的词向量模型提升任务性能。首先从官网上下载预训练的GloVe词向量表,我们选择特征长度100的文件glove.6B.100d.txt,原创 2021-10-08 08:34:55 · 1227 阅读 · 0 评论 -
深度学习之循环神经网络(11-b)GRU情感分类问题代码
深度学习之循环神经网络(11-b)GRU情感分类问题代码1. Cell方式代码运行结果2. 层方式代码运行结果1. Cell方式代码import osimport tensorflow as tfimport numpy as npfrom tensorflow import kerasfrom tensorflow.keras import layers, losses, optimizers, Sequentialfrom tensorflow.python.keras.datasets原创 2021-10-07 21:41:24 · 302 阅读 · 0 评论 -
深度学习之循环神经网络(11-a)LSTM情感分类问题代码
深度学习之循环神经网络(11-a)LSTM情感分类问题代码1. Cell方式代码运行结果2. 层方式代码运行结果1. Cell方式代码import osimport tensorflow as tfimport numpy as npfrom tensorflow import kerasfrom tensorflow.keras import layers, losses, optimizers, Sequentialfrom tensorflow.python.keras.dataset原创 2021-10-07 21:38:57 · 321 阅读 · 0 评论 -
深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战
深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战1. LSTM模型2. GRU模型 前面我们介绍了情感分类问题,并利用SimpleRNN模型完成了情感分类问题的实战,在介绍完更为强大的LSTM和GRU网络后,我们将网络模型进行升级。得益于TensorFlow在循环神经网络相关接口的格式统一,在原来的代码基础上面只需要修改少量几处,便可以完美的升级到LSTM模型或GRU模型。1. LSTM模型 首先是Cell方式。LSTM网络的状态List共有两个,需要分别初始化各层的h\boldsym原创 2021-10-07 21:34:56 · 691 阅读 · 0 评论 -
深度学习之循环神经网络(10)GRU简介
深度学习之循环神经网络(10)GRU简介1. 复位门2. 更新门3. GRU使用方法 LSTM具有更长的记忆能力,在大部分序列任务上面都取得了比基础RNN模型更好的性能表现,更重要的是,LSTM不容易出现梯度弥散现象。但是LSTM结构相对较复杂,计算代价较高,模型参数量较大。因此科学家们尝试简化LSTM内部的计算流程,特别是减少门控数量。研究发现,遗忘门是LSTM中最重要的门控[1],甚至发现只有遗忘门的简化版网络在多个基准数据集上面优于标准LSTM网络。在众多的简化版LSTM中,门控循环网络(Gated原创 2021-10-07 21:31:04 · 4626 阅读 · 2 评论 -
深度学习之循环神经网络(9)LSTM层使用方法
深度学习之循环神经网络(9)LSTM层使用方法1. LSTMCell2. LSTM层 在TensorFlow中,同样有两种方式实现LSTM网络。既可以使用LSTMCell来手动完成时间戳上面的循环运算,也可以通过LSTM层方式一步完成前向运算。1. LSTMCell LSTMCell的用法和SimpleRNNCell基本一致,区别在于LSTM的状态向量List有两个,即[ht,ct][\boldsymbol h_t,\boldsymbol c_t][ht,ct],需要分别初始化,其中List第一原创 2021-10-07 21:03:01 · 2390 阅读 · 0 评论 -
深度学习之循环神经网络(8)长短时记忆网络(LSTM)
深度学习之循环神经网络(8)长短时记忆网络(LSTM)0. LSTM原理1. 遗忘门2. 输入门3. 刷新Memory4. 输出门5. 小结 循环神经网络除了训练困难,还有一个更严重的问题,那就是短时记忆(Short-term memory)。考虑一个长句子:今天天气太美好了,尽管路上发生了一件不愉快的事,…,我马上调整好状态,开开心心地准备迎接美好的一天。根据我们的理解,之所以能够“开开心心地准备迎接美好的一天”,在于句子最开始处点明了“今天天气太美好了”。可见人类是能够很好地理解长句子的,但是循环原创 2021-10-07 09:36:35 · 1850 阅读 · 2 评论 -
深度学习之循环神经网络(7)梯度裁剪
深度学习之循环神经网络(7)梯度裁剪1. 张量限幅2. 限制范数3. 全局范数裁剪梯度弥散 梯度爆炸可以通过梯度裁剪(Gradient Clipping)的方式在一定程度上的解决。梯度裁剪与张量限幅非常类似,也是通过将梯度张量的数值或者范数限制在某个较小的区间内,从而将远大于1的梯度值减少,避免出现梯度爆炸。 在深度学习中,有3种常用的梯度裁剪方式。1. 张量限幅 直接对张量的数值进行限幅,使得张量W\boldsymbol WW的所有元素wij∈[min,max]w_{ij}\in[\text{m原创 2021-10-06 21:32:14 · 1123 阅读 · 0 评论 -
深度学习之循环神经网络(6)梯度弥散和梯度爆炸
深度学习之循环神经网络(6)梯度弥散和梯度爆炸 循环神经网络的训练并不稳定,网络的善妒也不能任意加深。那么,为什么循环神经网络会出现训练困难的问题呢?简单回顾梯度推导中的关键表达式:∂ht∂hi=∏j=1t−1diag(σ′(Wxhxj+1+Whhhj+b))Whh\frac{∂\boldsymbol h_t}{∂\boldsymbol h_i}=\prod_{j=1}^{t-1}diag(σ'(\boldsymbol W_{xh} \boldsymbol x_{j+1}+\boldsymbol W_{原创 2021-10-06 21:11:09 · 454 阅读 · 0 评论 -
深度学习之循环神经网络(5)RNN情感分类问题实战
深度学习之循环神经网络(5)RNN情感分类问题实战1. 数据集2. 网络模型3. 训练与测试完整代码运行结果 现在利用基础的RNN网络来挑战情感分类问题。网络结构如下图所示,RNN网络共两层,循环提取序列信号的语义特征,利用第2层RNN层的最后时间戳的状态向量hs(2)\boldsymbol h_s^{(2)}hs(2)作为句子的全局语义特征表示,送入全连接层构成的分类网络3,得到样本x\boldsymbol xx为积极情感的概率P(x为积极情感│x)∈[0,1]P(\boldsymbol x为积极情感原创 2021-10-05 21:30:10 · 2439 阅读 · 0 评论 -
深度学习之循环神经网络(4)RNN层使用方法
深度学习之循环神经网络(4)RNN层使用方法1. SimpleRNNCell2. 多层SimpleRNNCell网络3. SimpleRNN层 在介绍完循环神经网络的算法原理之后,我们来学习如何在TensorFlow中实现RNN层。在TensorFlow中,可以通过layers.SimpleRNNCell来完成σ(Wxhxt+Whhht−1+b)σ(\boldsymbol W_{xh} \boldsymbol x_t+\boldsymbol W_{hh} \boldsymbol h_{t-1}+\bold原创 2021-10-05 21:19:03 · 1052 阅读 · 2 评论 -
深度学习之循环神经网络(3)梯度传播
深度学习之循环神经网络(3)梯度传播 通过循环神经网络的更新表达式可以看出输出对张量Wxh\boldsymbol W_{xh}Wxh、Whh\boldsymbol W_{hh}Whh和偏置b\boldsymbol bb均是可导的,可以利用自动梯度算法来求解网络的梯度。此处我们仅简单地推导一下RNN的梯度传播公式,并观察其特点。 考虑梯度∂L∂Whh\frac{∂\mathcal L}{∂\boldsymbol W_{hh}}∂Whh∂L,其中L\mathcal LL为网络的误差,只考虑最后一个时原创 2021-10-04 22:13:38 · 649 阅读 · 0 评论 -
深度学习之循环神经网络(2)循环神经网络原理
深度学习之循环神经网络(2)循环神经网络原理1. 全连接层2. 共享权值3. 全局语义4. 循环神经网络 现在我们来考虑如何吃力序列信号,以文本序列为例,考虑一个句子:“I dislike this boring movie”通过Embedding层,可以将它转换为shape为[b,s,n][b,s,n][b,s,n]的张量,bbb为句子数量,sss为句子长度,n为向量长度。上述句子可以表示为shape为[1,5,10][1,5,10][1,5,10]的张量,其中5代表句子单词长度,10表示词向原创 2021-10-04 21:43:27 · 640 阅读 · 0 评论 -
深度学习之循环神经网络(1)序列表示方法
深度学习之循环神经网络(1)序列表示方法序列表示方法Embedding层2. 预训练的词向量前面的卷积神经网络利用数据的局部相关性和权值共享的思想大大减少了网络的参数量,非常适合于图片这种具有空间(Spatial)局部相关性的数据,已经被成功地应用到计算机视觉领域的一系列任务上。自然界的信号除了具有空间维度外,还有一个时间(Temporal)维度。具有时间维度的信号非常常见,比如我们正在阅读的文本、说话时发出的语音信号、随着时间变化的股市参数等。这类数据并不一定具有局部相关性,同时数据在时间维度上的长度也原创 2021-10-03 15:59:19 · 868 阅读 · 0 评论 -
深度学习之卷积神经网络(14)CIFAR10与ResNet18实战
深度学习之卷积神经网络(14)CIFAR10与ResNet18实战网络结构Basic BlockRes BlockResNet18完整代码CIFAR10ResNetResNet_CIFAR10_train运行结果完整的运行结果本节我们将实现18层的深度残差网络ResNet18,并在CIFAR10图片数据集上训练与测试。并将与13层的普通神经网络VGG13进行简单的性能比较。网络结构 标准的ResNet18接受输入为224×224224×224224×224大小的图片数据,我们将ResNet18进行适原创 2021-10-03 11:32:49 · 5493 阅读 · 0 评论 -
深度学习之卷积神经网络(13)DenseNet
深度学习之卷积神经网络(13)DenseNet Skip Connection的思想在ResNet上面获得了巨大的成功,研究人员开始尝试不同的Skip Connection方案,其中比较流行的就是DenseNet[1]。DenseNet将前面所有层的特征图信息通过Skip Connection与当前层输出进行聚合,与ResNet的对应位置相加方式不同,DenseNet采用在通道轴ccc维度进行拼接操作,聚合特征信息。[1] G. Huang, Z. Liu 和 K. Q. Weinberger, “De原创 2021-10-03 11:07:41 · 632 阅读 · 0 评论 -
深度学习之卷积神经网络(12)深度残差网络
深度学习之卷积神经网络(12)深度残差网络1. ResNet原理AlexNet、VGG、GoogleLeNet等网络模型的出现将神经网络的法阵带入了几十层的阶段,研究人员发现网络的层数越深,越有可能获得更好的泛化能力。但是当模型加深以后,网络变得越来越难训练,这主要是由于梯度弥散和梯度爆炸现象造成的。在较深层数的神经网络中,梯度信息由网络的末层传向网络的首层时,传递的过程中会出现梯度接近于0或梯度值非常大的现象。网络层数越深,这种现象可能会越严重。 那么怎么解决深层神经网络的梯度弥散和梯度爆炸现象呢?一原创 2021-10-03 10:43:49 · 3184 阅读 · 0 评论 -
深度学习之卷积神经网络(11)卷积层变种
深度学习之卷积神经网络(11)卷积层变种1. 空洞卷积卷积神经网络的研究产生了各种各样优秀的网络模型,还提出了各种卷积层的变种,本节将重点介绍书中典型的卷积层变种。1. 空洞卷积 普通的卷积层为了减少为了的参数量,卷积核的设计通常选择较小的1×11×11×1和3×33×33×3感受野大小。小卷积核使得网络提取特征时的感受野区域有限,但是增大感受野区域又会增加网络的参数量和计算代价,因此需要权衡设计。 空洞卷积(Dilated/Atrous Convolution)的提出较好地解决了这个问题,空洞卷原创 2021-10-03 10:05:25 · 1130 阅读 · 0 评论 -
深度学习之卷积神经网络(10)CIFAR10与VGG13实战
深度学习之卷积神经网络(10)CIFAR10与VGG13实战MNIST是机器学习最常用的数据集之一,但由于手写数字图片非常简单,并且MNIST数据集只保存了图片灰度信息,并不适合输入设计为RGB三通道的网络模型。本节将介绍另一个经典的图片分类数据集: CIFAR10。 CIFAR10数据集由加拿大Canadian Institute For Advanced Research发布,它包含了飞机、汽车、鸟、猫等共10大类物体的彩色图片,每个种类收集了6000张32×3232×3232×32大小图片,共6万原创 2021-10-02 21:08:53 · 2027 阅读 · 0 评论 -
深度学习之卷积神经网络(9)经典卷积网络
深度学习之卷积神经网络(9)经典卷积网络1. AlexNet2. VGG系列3. GoogleLeNet 自2012年AlexNet[1]的提出以来,各种各样的深度卷积神经网络模型相继被提出,其中比较有代表性的有VGG系列[2],GoogleLeNet系列[3],ResNet系列[4],DenseNet系列[5]等,他们的网络层数整体趋势逐渐增多。以网络模型在ILSVRC挑战赛ImageNet数据集上面的分类性能表现为例,如下图所示,在AlexNet出现之前的网络模型都是浅层的神经网络,Top-5错误率均原创 2021-10-02 20:56:48 · 436 阅读 · 0 评论 -
深度学习之卷积神经网络(8)BatchNorm层
深度学习之卷积神经网络(8)BatchNorm层BatchNorm层概念BatchNorm层实现1. 向前传播2. 反向更新3. BN层实现4. 完整代码卷积神经网络的出现,网络参数量大大减低,使得几十层的深层网络称为可能。然而,在残差网络出现之前,网络的加深使得网络训练变得十分不稳定,甚至出现网络长时间不更新甚至不收敛的现象,同时网络对超参数比较敏感,超参数的微量扰动也会导致网络的训练轨迹完全改变。 2015年,Google研究人员Sergey Ioffe等提出了一种参数标准化(Normalize)的原创 2021-10-02 20:38:58 · 3355 阅读 · 0 评论 -
深度学习之卷积神经网络(7)池化层
深度学习之卷积神经网络(7)池化层在卷积层中,可以通过调节步长参数s实现特征图的高宽成倍缩小,从而降低了网络的参数量。实际上,处理通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,它就是这里要介绍的池化层(Pooling Layer)。 池化层同样基于局部相关性的思想,通过从局部相关的一组元素中进行采样或信息聚合,从而得到新的元素值。特别地,最大池化层(Max Pooling)从局部相关元素集中选取最大的一个元素值,平均池化层(Average Pooling)从局部相关元素集中计算平均值并返回。以原创 2021-10-02 11:53:24 · 1827 阅读 · 0 评论 -
深度学习之卷积神经网络(6)梯度传播
深度学习之卷积神经网络(6)梯度传播 在完成手写数字图片识别实战后,我们对卷积神经网络的使用有了初步的了解。现在我们来解决一个关键问题,卷积层通过移动感受野的方式实现离散卷积操作,那么它的梯度传播是怎样进行的呢? 考虑一简单的情形,输入3×33×33×3的单通道矩阵,与一个2×22×22×2的卷积核,进行卷积运算,输出结果打平后直接与虚构的标注计算误差,如下图所示。我们来讨论这种情况下的梯度更新方式。卷积层梯度传播举例 首先推导出张量O\boldsymbol OO的表达形式:o00=x00w00原创 2021-10-02 11:28:31 · 1073 阅读 · 0 评论 -
深度学习之卷积神经网络(5)表示学习
深度学习之卷积神经网络(5)表示学习 我们已经介绍完卷积神经网络层的工作原理与实现方法,复杂的卷积神经网络模型也是基于卷积层的堆叠构成的。在过去的一段时间内,研究人员发现网络层数越深,模型的表达能力越强,也就越有可能取得更好的性能。那么层层堆叠的卷积网络到底学到了什么特征,使得层数越深,网络的表达能力越强呢? 2014年,Matthew D.Zeiler等人尝试利用可视化的方法去理解卷积神经网络到底学到了什么。通过将每层的特征利用“反卷积”网络(Deconvolutional Network)映射回输入原创 2021-10-02 11:06:10 · 755 阅读 · 0 评论 -
深度学习之卷积神经网络(4)LeNet-5实战
深度学习之卷积神经网络(4)LeNet-5实战加载数据集创建网络训练阶段测试阶段完整代码 1990年代,Yann LeCun等人提出了用于手写数字和机器打印字符图片识别的神经网络,被命名为LetNet-5[1]。LetNet-5的提出,使得卷积神经网络在当时能够成功被商用,广泛应用在邮政编码、支票号码识别任务中。下图是LetNet-5的网络结构图,它接受32×3232×3232×32大小的数字、字符图片,经过第一个卷积层得到[b,28,28,6][b,28,28,6][b,28,28,6]形状的张量,经过原创 2021-10-02 10:52:00 · 810 阅读 · 0 评论 -
深度学习之卷积神经网络(3)卷积层实现
深度学习之卷积神经网络(3)卷积层实现1. 自定义权值2. 卷积层类 在TensorFlow中,既可以通过自定义权值的底层实现方式搭建神经网络,也可以直接调用现成的卷积层类的高层方式快速搭建复杂网络。我们主要以2D卷积为例,介绍如何实现卷积神经网络层。1. 自定义权值 在TensorFlow中,通过tf.nn.conv2d函数可以方便地实现2D卷积运算。tf.nn.conv2d基于输入X:[b,h,w,cin]\boldsymbol X:[b,h,w,c_{in}]X:[b,h,w,cin]和卷积核原创 2021-10-02 10:27:48 · 625 阅读 · 0 评论