深度学习进阶之神经网络的训练

  • 神经网络训练优化
    • 一、数据集
      • 1.1 数据集分类
      • 1.2 数据集的划分
      • 1.3 同源数据集的重要性
      • 1.4 无测试集的情况
    • 二、偏差与方差
      • 2.1 概念定义
        • 2.1.1 偏差(bias)
        • 2.1.2 方差(variance)
      • 2.2 图形定义
      • 2.3 衡量偏差与方差的指标
        • 2.3.1 定义
        • 2.3.2 现有下面四种情况
      • 2.4 过拟合与欠拟合
        • 2.4.1 欠拟合、过拟合、拟合的直观表现
        • 2.4.2 解决高偏(方)差方法
    • 三、正则化
      • 3.1 正则化消除过拟合的原理
      • 3.2 *L-2* 正则化
        • 3.2.1 定义
        • 3.2.2 惩罚项
    • 四、*Dropout* 正则化
      • 4.1 原理
      • 4.2 Dropout 正则化之反向随机失活
      • 4.3 参数 keep-prob 的选择
      • 4.4 dropout 正则化原理
    • 五、其他解决过拟合的方法
      • 5.1 数据增强
      • 5.2 早停法
    • 六、Normalization(归一化)
      • 6.1 归一化的原因
      • 6.2 归一化的步骤
      • 6.3 Batch Normalization(批归一化)
      • 七、梯度消失与梯度爆炸
      • 7.1 梯度消失与爆炸的含义
      • 7.2 解决方法:权重初始化

神经网络训练优化

在这一部分中,你将学习如何严密地构建并有效地运作神经网络。一些重要的概念,例如诊断偏差和方差、正则化、归一化等将陆续介绍,同时还会学习一些高级优化算法,例如Momentum算法和Adam算法。

一、数据集

1.1 数据集分类

在配置训练集、验证集和测试集的过程中做出正确决策,会在很大程度上提升神经网络的效率。机器学习的工作流程为:用训练集训练不同的模型,使用验证集或交叉验证集来评估不同的算法,然后选择效果最佳的模型,不断迭代去改善模型的性能,最后再用测试集去评估。

1.2 数据集的划分

小数据(一万条数据量以内的情况)划分方式为:60%训练集、20%验证集、20%测试集。假设数据集数量为100万条,数据集划分的一般方式为:98%训练集、1%验证集、1%测试集

1.3 同源数据集的重要性

假设现构建一个可以识别猫图片的分类器,其中验证集是从网上下载的猫的图片(分辨率高、制作精良),而验证集和测试集却是用手机拍摄的猫的图片(分辨率低、形态模糊),这会导致无法准确评估分类器(具体原因不必知道)。解决这个问题的办法就是确保验证集和测试集的数据来自同一分布。

1.4 无测试集的情况

测试集的目的是对最终选定的神经网络进行无偏评估,如果不需要无偏评估可以不设置测试集。这种情况下数据集只需划分为训练集和验证集,那么在训练集上训练的时候就需要尝试不同的模型框架,然后在验证集上评估这些模型,迭代并选出最适用的模型,因为验证集中已经涵盖了测试集数据,其不再提供无偏评估。其实在这种将数据集只划分为训练集和验证集的情况下,验证集又叫测试集(训练集还是叫训练集)。不过在实际应用中,人们只是把测试集当成简单交叉验证集使用,并没有起到测试集对于模型评估的作用,因为他们把验证集数据过度拟合到了测试集中。综上,搭建验证集和测试集能够加速神经网络的集成,也更有效地衡量算法的偏差和方差,从而可以帮助我们更高效地选择合适的方法对算法进行优化。

二、偏差与方差

模型好坏的评判标准是什么?改善模型的依据何在?何时停止训练为佳?要解决上述问题,需要引入偏差方差这两个概念,这也是后续了解过拟合、正则化、提早终止训练、数据增强等概念和方法的前提。

2.1 概念定义

2.1.1 偏差(bias)

偏差衡量了模型的预测值与真实值间的偏离程度。通常在深度学习中,每一次训练迭代出来的新模型,都会拿训练数据进行预测,偏差就能反应预测值与真实值匹配程度(比如准确度为96%,则说明是低偏差;反之,如果准确度只有70%,则说明是高偏差)。

2.1.2 方差(variance)

方差衡量了训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况。通常在深度学习训练的初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。

2.2 图形定义

设红色靶心为真实值,蓝色点集为预测值。模型训练迭代过程中可能出现下面四种情况:

· 低偏差,低方差:理想情况,此时蓝色点集基本落在靶心范围内,且数据离散程度小,基本在靶心范围内;
· 低偏差,高方差:这是深度学习面临的最大问题—过拟合。模型过度拟合了训练数据,导致其泛化(或通用)能力差,在测试集上表现极差;
· 高偏差,低方差:这往往是训练的初始阶段—欠拟合;
· 高偏差,高方差:这是训练最糟糕的情况,准确度差,数据的离散程度也差。

2.3 衡量偏差与方差的指标

在一个只有x1和x2两个特征的二维数据集中,可以通过绘制数据将偏差和方差可视化(因为是二维空间)。但在多维空间数据中,绘制数据和可视化分割边界无法实现,但可以通过两个指标,来衡量偏差和方差:训练集误差和验证集误差

2.3.1 定义

1)训练集误差:训练集误差是针对于数据集的。即训练集中将目标值为1的错写成了0的错误样本占总训练样本的比例。训练集误差的大小可以衡量偏差的大小(两者呈正相关)
2)验证集误差:验证集误差是针对于训练出的模型的。模型通过验证集得出的预测值与验证集中的目标值不一样的样本占整个验证集样本的比例即验证集误差。验证集误差与训练集误差之间的差值衡量方差,两者间差值越小方差越低

2.3.2 现有下面四种情况

· 训练集误差低、验证集误差高:这种情况等同于低偏差、高方差,属于过拟合情况。
· 训练集误差高、验证集误差高(且两者差不多高):这种情况等同于高偏差、低方差,属于欠拟合情况。
· 训练集误差高、验证集误差高(两者虽然都高,但验证集误差比训练集误差高得多):这种情况等同于高偏差、高方差,这是训练最糟糕的情况,准确度差又过拟合。
· 训练集误差低、验证集误差低:这种情况等同于低偏差、低方差,这是训练的理想模型。
(注:以上分析都是基于假设预测的,假设人眼辨别的错误率接近0%,这种情况下的误差称为最优误差或贝叶斯误差,如果最优误差非常高(比如15%),那么即使训练误差15%、验证误差16%,15%的错误率对训练集来说也是非常合理的,偏差不高,方差也非常低。)

2.4 过拟合与欠拟合

2.4.1 欠拟合、过拟合、拟合的直观表现

随着模型的不断训练,准确度不断上升,偏差自然逐渐降低。但方差的变化趋势却不易理解,为何训练初始阶段方差逐渐降低,训练后期又是方差逐渐增高?方差的公式为:E [(h(x) - h(x))2] ,即每个预测值与预测均值差的平方和再求平均数,可以表现为一种波动变化,低方差意味低变化,高方差意味高变化。现通过训练的不同阶段来直观感受方差的变化:

· A 图为训练初始阶段(蓝线代表模型、红点代表训练数据),可以发现模型对训练数据拟合度很差(高偏差)。但蓝线近似线性组合,其波动变化小(低方差),这个阶段也称之为欠拟合,需要加大训练迭代数。
· B 图为训练的后期阶段,可明显看出模型的拟合度很好(低偏差),但蓝线的波动性非常大,为高方差,这个阶段称之为过拟合,即蓝线模型很适合这套训练数据,但如果用测试数据来检验模型,就会发现泛化能力差,准确度下降。
· C 图这个蓝色模型可认为是“恰好”的一个模型,既能跟训练数据拟合,又离完美拟合保持一定距离,模型更具通用性,用测试数据验证会发现准确度也不错。 那么如何得到这个“恰好”的模型呢?下一小节将做介绍。

2.4.2 解决高偏(方)差方法

  1. 解决高偏差方法:初始模型训练完成后,首先判断算法的偏差,如果偏差较高,试着评估训练集或训练数据的性能。如果偏差高到甚至无法拟合训练集,那么就选择一个新的网络(如含有更多隐藏层的网络)、或者花费更多时间来训练网络、或者尝试更先进的优化算法。
  2. 解决高方差方法:当偏差降低到可接受的数值,再检查方差。评估方差需要查看验证集性能。如果方差高,最好的解决办法就是采用更多数据,数据越多,其泛化能力越强。但在无法获得更多数据的情况下,也可以尝试通过正则化来减少过拟合,或者根据已有的数据做数据增强。

:在深度学习的早期阶段,并没有太多办法可以做到只减少偏差或方差却不影响到另一方。但在当前的深度学习和大数据时代,通过构建一个更大的网络便可以在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。这也是如今不用太过关注如何平衡偏差和方差的一个重要原因。

三、正则化

3.1 正则化消除过拟合的原理

(1)案例一:下图为一个神经网络示意图

假设该神经网络过拟合,现需要将损失函数加上正则项以避免权重矩阵过大。直观上理解就是当λ(λ为正则项中的参数)设置得足够大时,许多隐藏单元的权重矩阵W趋近于0,于是消除了这些隐藏单元的影响(注意:隐藏单元但仍存在,只是影响被削弱了)。这种情况下,神经网络被简化成了一个很简单的网络(如同一个深度很大的逻辑回归单元),如下图所示:

下图为神经网络的三种拟合状态:

正则化会使得神经网络从右图中的过拟合的状态逐渐趋近于左图中的欠拟合状态(因为当越来越多的w趋近于0时,神经网络逐渐就成为了一个线性模型,正如左图所示),但是λ会存在一个中间值让神经网络接近于“just right”的中间状态,这个中间值需要通过调参去寻找。

(2)案例二:假设神经网络中每一层的激活函数都为tanh函数,下图是tanh函数的函数图像

“红线”部分可以近似看作线性函数。λ增大会导致w[l]减小,由于z[l]=w[l]a[l-1]+b[l],w[l]减小会导致z[l]减小,所以z[l]值会落在上图中的红线部分,从而使得激活函数大致呈线性。因为每层的激活函数都是tanh函数,所以结果就是整个神经网络成为一个线性网络。综上所述,正则化解决过拟合的原理就是通过增大λ使w减小,从而使z减小,当z的取值很小时,所有激活函数都近似等同于线性函数,整个神经网络会计算离这个线性函数最近的值,这个线性函数很简单,不会发生过拟合。

3.2 L-2 正则化

3.2.1 定义

算法优化目的是求成本函数J 的最小值,在训练中加入正则化只需在成本函数中添加一个惩罚项(此方法称为L2正则化)。惩罚项中只有w 没有b 的原因是因为b对算法的影响没有w 大(w 是高维参数,b 是一维),所以一般在惩罚项中省略了b

3.2.2 惩罚项

其中 λ惩罚系数(可理解为正则化力度),通常使用交叉验证集来配置这个超参数。由该项构造特点可知,随着回归的优化导致损失函数J 逐渐变小,而加入了惩罚项之后也会导致惩罚项逐渐变小。而因为惩罚项是由每个特征的权重平方相加而成,所以惩罚项的减小就会导致特征权重随着回归优化逐渐变小λ 设置得越大,wj 就减小得越快),从而使得高次项(过度的特征)前的权重逐渐趋于0,通过此方法就可减小高次项对模型的影响。注: L1正则化就是把L2正则化惩罚项中的w 平方相加换成w 绝对值相加,实际情况中一般都用L2正则化。

四、Dropout 正则化

4.1 原理

dropout正则化过程过程:复制该神经网络,遍历网络的每一层,并设置消除神经网络中节点的概率,假设每个节点得以保留和消除的概率都是50%,然后消除一些节点,并删掉从该节点进出的箭头,最后得到一个规模更小的网络,利用梯度下降的方法进行训练。如下图所示为节点精简后的神经网络:

4.2 Dropout 正则化之反向随机失活

反向随机失活是dropout正则化最常用的方法,用一个三层神经网络举例说明反向随机失活过程,其原理如下:
1)参数说明
· 定义dropout 向量记为dd3 表示一个三层的dropout向量);
· 定义节点保留率 keep-prob=0.8,它表示某个隐藏单元的保留概率;
· 定义网络中第三层的激活值为a3
2)执行步骤
step1:调用 d3=np.random.rand(a3.shape[0], a3.shape[1]) < keep-prob生成一个样本范围为(0,1)的dropout 随机矩阵,该矩阵中元素为1的概率是0.8,元素为0的概率是0.2。

step2:从第三层中获取激活值a3a3=np.multiply(a3,d3),其作用是过滤 d3 中所有等于0的元素(假设原本第三层中有50个单元可计算出50个激活值a3,现在由于乘上了d3,导致其中有20%的a3 消失了)。

step3:用a3除以keep-prob得到新的a3,这样做的原因是假设第三层上含有50个单元,由于节点保留率为0.8,意味着有第三层中有10个节点会被删除或归零。因z[4]=w[4]a[3]+b[4],而a[3]减少了20%(因为第三层中有20%的计算单元被删除了,导致计算激活值a3 的单元少了20%),为了不影响到z[4]的值,可以用a3 除以0.8(因为现在的a3 是用dropout正则化之前的a3 的0.8倍,除以0.8正好可以抵消dropout带给z[4]的影响)。a3 /= keep-prob 这一步其实就是反向随机失活的原理。其功能是无论 keep-prob 的值为多少,反向随机失活都可以通过a3 /= keep-prob来确保a3 的期望值不变(这个期望是第四层对于第三层中的激活值的期望)。

4.3 参数 keep-prob 的选择

神经网络中,每一层对应的keep-prob可以不同,在对参数keep-prob选择时遵循一个原则:当一层中的权重矩阵较大时,可以让该层的keep-prob值较小,这样可以避免过拟合的情况发生;当一个层中权重矩阵较小时,便不必担心过拟合问题,可以将keep-prob值设为1(即保留全部节点),这种情况相当于不对该层使用dropout正则化,下面通过一个案例举例。下图为一个含有三个输入的神经网络:

通过观察可以发现:第一层的参数矩阵W[1].shape=(3,7);第二层的参数矩阵W[2].shape=(7,7);第三层的参数矩阵W[3].shape=(7,3);第四层的参数矩阵W[4].shape=(3,2);第五层的参数矩阵W[5].shape=(2,1)。由于W[2]较大,所以设第二层的keep-prob为0.5,以此避免过拟合;W[1]和W[3]大小适中,可以设keep-prob=0.7;W[4]和W[5]较小,不必担心过拟合,可以设keep-prob=1。注意一般不对输入层用dropout正则化,即输入层的keep-prob=1。

4.4 dropout 正则化原理

dropout正则化通过使神经网络变得简单的方式来消除过拟合,因此采用一个简单的神经网络似乎与正则化的效果是一样的,下面将介绍dropout正则化消除过拟合的原理。从单个神经元入手,如下图(x1…xn为针对于“橘色单元”的各个输入):

通过dropout正则化,橘色单元的部分输入会被消除。由于上述原因导致这个“橘色单元”不能依靠任何输入,因为任何输入都有可能被随机删除,所以神经网络不愿意把赌注都押在这一个节点上,这会导致其不愿意给任意一个输入加上太多权重,会把每一个输入的权重都赋的很小,这就有点类似于L2正则化了,能够起到减轻过拟合的作用。事实证明,dropout正则化被正式地作为一种正则化的替代形式,它与L2正则化起到的效果类似,L2正则化中的惩罚系数λ与dropout正则化中的节点保留率keep-prob都可以通过控制其大小来决定权重w的变化。

五、其他解决过拟合的方法

5.1 数据增强

对原有的数据进行改造,比如旋转、反转、白增强等操作创造出很多数据,从而达到扩增算法数据的目的。需要注意的是改造后的数据不能丧失原有的数据特征,比如一张猫的照片改造之后还能认出这是张猫的照片。

5.2 早停法

所谓“早停”指的是提早结束网络训练,那么何时结束最合适呢?通过下图可得出结论:

由图可知:随着模型复杂度的增高,训练误差会逐渐降低,但测试误差最开始逐渐降低,到某个点的时候又开始增高,这个转折点就是训练应该停止的时间。“早停法”的缺点是由于提前结束了训练,会导致算法通过梯度下降对损失函数的优化提前结束。

六、Normalization(归一化)

6.1 归一化的原因

  • 原因一:

    左图是没有经过任何处理的输入数据,曲线是sigmoid函数。如果数据在梯度很小的区域,那么学习率就会陷入长时间的停滞。归一化后,数据被移到中心区域(如右图),大多数激活函数的这个区域梯度较大(比如ReLU),所以归一化是一种对抗梯度消失的有效手段。
  • 原因二:
    如果用非归一化的数据作为输入的特征,那么得到的成本函数将如图所示:

    假如不同特征(x1、x2)在不同的取值范围(例如x1取值范围为1-1000,x2取值范围为0-1),结果会导致权重w1和w2的范围相差较大,从而成本函数成为一个非常狭窄的图像。假如将该图像投影到w-b平面将会得到下面这副图像:

    经过归一化数据输入的成本函数图像如下图所示,看起来更对称:

    成本函数是如图这种球形轮廓时,无论从哪个位置开始,梯度下降都能更直接地找到最小值,因此可以在梯度下降中使用较大的步长。注:当各特征取值范围相差不大时,是否使用归一化输入差别不大,但是当特征取值范围相差较大时,就必须使用归一化。

6.2 归一化的步骤

如图是一个含有两个特征(x1、x2)的训练集样本分布情况。由于决定样本分布情况的是平均值和方差,那么就需要对平均值和方差“下手”,以下三个步骤为归一化的标注步骤:

  • step1: 零均值化
    使样本的平均值靠近0(让训练样本分布于坐标原点附近),可通过用x(i)(i = 1、2、3…)减去输入样本的平均值μ达到零均值化的效果:

    x对应样本特征,让每一个特征依此减去平均值μ,从而达到移动样本的效果。依此移动每一个样本,直到完成零均值化(μ是所有特征值相加取平均,即特征平均值)。零均值化后样本分布如下图:
  • step2: 计算输入样本的方差
  • step3: 归一化
    因为特征x1的方差要比特征x2的方差大得多(x1轴上样本分布跨度更大、更离散),要两者的方差尽可能接近可通过归一化,归一化公式为用第一步中计算出的x除以输入样本的方差:X:=X /σ2。有时为了避免出现x除以0的情况发生,可以在分母加上一个误差项ε。归一化后效果如下图:

    现在x1和x2的方差都为1。值得注意的是如果用该方法来归一化训练集,那么请保证用相同的μ和σ2来归一化测试集,否则训练集和测试集的归一化将有所不同。

6.3 Batch Normalization(批归一化)

Batch Normalization(BN)是一个训练深度神经网络的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中“梯度消失”的问题。在BN被提出之前,归一化只限于输入层,但BN可以在网络中任意一层进行归一化,即对于训练中每层每一个batch的数据 {x1,x2,…,xn} 进行归一化。BN就是要解决在训练过程中,中间层数据分布发生改变的情况。

  • BN步骤(BN步骤主要分为4步):
    1)求每一个训练批次数据的均值;
    2)求每一个训练批次数据的方差;
    3)使用求得的均值和方差对该批次的训练数据做归一化,获得0-1分布(其中ε是为了避免除数为0时所使用的微小正数);
    4)尺度变换和偏移:将xi乘以γ调整数值大小,再加上β(注意这里的β跟Momentum里面的β没有关系)增加偏移后得到yi,这里的γ是尺度因子,β是平移因子。这一步是BN的精髓,由于归一化后的xi基本会被限制在正态分布下,使得网络的泛化表达能力下降。为解决该问题,引入两个新的参数:γ,β,使得标准化后的xi能被随意设置(就像梯度下降更新w和b那样,γ和β也可通过梯度下降进行更新,神经网络中每一层对应的γ和β都不同)。综上,在对每一层的输入进行上述四步之后,每一层的输入由xi成为了yi。
    注:1)上述步骤中的xi是每一个隐层的输入。2)第三步中除以的是标准差(之前对输入归一化时除的是方差),所以第三步其实是标准化。
  • 补充:尺度变换和偏移的原因

    a中左图是没有经过归一化处理的输入数据,曲线是sigmoid函数。如果数据在梯度很小的区域,那么学习率就会很慢甚至陷入长时间的停滞。归一化后,数据就被移到中心区域如右图所示,对于大多数激活函数而言,这个区域的梯度都是最大的或者是有梯度的(比如ReLU),这可以看做是一种对抗梯度消失的有效手段。对于输入层是如此,如果对于每一层数据都那么做的话,数据的分布总是处在激活函数梯度较高的区域,这样训练起来更有效率。那为什么还需要尺度变换和偏移?我们思考一个问题,归一化后得到的数据分布是正态分布,但凭什么认为正态分布就是最好的训练样本的特征分布呢?比如激活函数未必是对方差为1的数据效果最好(比如某个激活函数,在-1到1之间的梯度变化不大),那么非线性变换的作用就不能很好的体现,换言之归一化操作后反而会削弱网络的性能!针对该情况,加入尺度变换和偏移可以随意调整每一层输入数据的分布情况,使得新的分布更能保证模型的非线性表达能力。说白了,决定样本分布情况的是样本的平均值和方差,而γ和β正好可以随意调整样本的平均值和方差,又因为不是所有激活函数都是在样本处于正态分布情况下发挥最好效果,所有对于不同激活函数,样本的分布也应不同,这就是引入尺度变换和偏移的原因。

七、梯度消失与梯度爆炸

深度神经网络所面临的一个大问题是梯度消失\爆炸。也就是说当训练深度神经网络时,导数(坡度)有时会变得非常大、有时又会变得很小,这加大了训练的难度。

7.1 梯度消失与爆炸的含义

下图所示为一个深度神经网络(假设每层都含有两个单元):

假设第一层的权重矩阵为W[1]、第二层的权重矩阵为W[2]、第L层的权重矩阵为W[L],特征矩阵X,设每一层中的激活函数都是线性函数:g(z) = z。当忽略偏置项b时,第一层中:Z[1]=W[1]X、A[1]=g(Z[1])=W[1]X,所以第一层中输出的A[1]为W[1]X;同理可得第二层中输出的A[2]=W[1]W[2]X,照此规律可得y=W[1]W[2]…W[L]X。除了最后一项W[L](因为W[L]为两行一列),假设W[1]…W[L-1]都大于1 ,则当一个深度神经网络的L较大时,会导致激活值呈指数级爆炸增长,从而在优化损失函数过程中会发生梯度爆炸。相反,假如令W[1]…W[L-1]都为(0,1)区间 ,将会导致y^呈指数级递减,从而在优化损失函数过程中会发生梯度消失(梯度弥散)。其实在深度神经网络中,只要权重矩阵里的元素大于1就会发生梯度爆炸,只要权重矩阵里的元素小于1,就会发生梯度消失。

7.2 解决方法:权重初始化

  • 权重初始化的重要性
    神经网络的训练过程中的参数学习是基于梯度下降算法进行优化的,梯度下降法需要在开始训练时给每个参数赋予一个初始值,这个初始值的选取十分重要。在神经网络的训练中如果将权重全部初始化为0,可能出现完全对称现象。为了避免完全对称现象,比较好的方法是对每层的权重都进行随机初始化,这样使得不同层的神经元之间有很好的区分性。但是,随机初始化参数的一个问题是:如果权重初始化太小(小于1),会出现梯度消失的问题;如果参数初始化太大(大于1),会出现梯度爆炸的问题。
  • 常用的参数初始化方法
    (1)高斯分布初始化:权重参数从一个固定均值和固定方差的高斯分布进行随机初始化,那么高斯正态分布的工作就是找到这个固定均值和固定方差。
    (2)均匀分布初始化:在一个给定的区间[-r,r]内采用均匀分布来初始化权重参数。超参数r的设置可以按照神经元的连接数量进行自适应的调整。
    注:初始化一个深层神经网络时,一个比较好的初始化策略是保持每个神经元输入和输出的方差一致,通俗的说就是保证每个神经元的输入和输出值相较于平均值的距离一样。

【零基础深度学习教程第二课:深度学习进阶之神经网络的训练】相关推荐

  1. 人工智能教程第一课 深度学习和计算机视觉TensorFlow入门

    深度学习 学习目标 知道什么是深度学习 知道深度学习的应用场景 1.什么是深度学习 在介绍深度学习之前,我们先看下人工智能,机器学习和深度学习之间的关系: 机器学习是实现人工智能的一种途径,深度学习是 ...

  2. 【零基础深度学习教程第一课:深度学习基础】

    深度学习基础 目录 *深度学习基础* <第一节 深度学习简介> 一.深度学习与机器学习区别 二.神经网络简介 2.1 单神经元网络 2.2 多神经元网络 <第二节 神经网络基础> ...

  3. 【项目实战课】从零掌握安卓端Pytorch原生深度学习模型部署

    欢迎大家来到我们的项目实战课,本期内容是<从零掌握安卓端Pytorch原生深度学习模型部署>.所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战 ...

  4. 【视频课】言有三每天答疑,38课深度学习+超60小时分类检测分割数据算法+超15个Pytorch框架使用与实践案例助你攻略CV...

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  5. 天才少年稚晖君 | 【保姆级教程】个人深度学习工作站配置指南

    天才少年稚晖君 | [保姆级教程]个人深度学习工作站配置指南 来源:https://zhuanlan.zhihu.com/p/336429888 0. 前言 工作原因一直想配置一台自己的深度学习工作站 ...

  6. 深度解析】Google第二代深度学习引擎TensorFlow开源(CMU邢波独家点评、白皮书全文、视频翻译)

    新智元原创1 作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码. ...

  7. 2019b官方手册中文版_数据科学|「最全」实至名归,NumPy 官方早有中文教程,结合深度学习,还有防脱发指南...

    文章须知 文章作者:机器之心 责任编辑:书生 审核编辑:阿春 微信编辑:玖蓁 本文转载自公众号 机器之心 (ID:almosthuman2014) 原文链接:「最全」实至名归,NumPy 官方早有中文 ...

  8. 乐行学院Redis5学习教程 第二章 redis5远程访问及工具Redis Desktop Manager使用

    乐行学院Redis5学习教程 第二章 redis5远程访问工具Redis Desktop Manager 检查服务器端口和防火墙 Redis Desktop Manager介绍 Redis Deskt ...

  9. [翻译] 神经网络与深度学习 第六章 深度学习 - Chapter 6 Deep learning

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 第五章 ...

最新文章

  1. 简单快速修改大量重复代码(Intellij IDEA)
  2. Supervisor 进程管理工具
  3. Android Studio 快捷键使用说明
  4. Python的魔法函数
  5. 作者:龚南宁,数据堂(北京)科技股份有限公司对外合作部副总监
  6. 将堆栈异常返回前端显示
  7. Android笔记 style样式
  8. 2020 泰迪杯 C 题
  9. 日志易使用系列三:仪表盘的创建与使用
  10. 小爱同学app安卓版_小爱同学APK提取版-小爱同学APP最新版下载5.15.10安卓版-玩友游戏网...
  11. C#汉诺塔递归算法实现
  12. AT89S52单片机C语言编程,单片机的C语言应用程序设计_基于AT89S52单片机的篮球计时计分器.doc...
  13. 大学四年,自学编程常用的10个学习网站
  14. Windows系统快速查找文件
  15. 初识html5-当当网图书分类页面,html+css静态页面当当网案例
  16. 产品经理天马行空,表格组件应对自如
  17. 键入一个字母,如果小写字母输出大写,大写字母输出小写字母
  18. python游戏制作rpg_2. Molten从零开始做独立游戏-引擎选用
  19. 使用OMF(Oracle Managed Files,Oracle管理的文件)的场景示例
  20. 如何把Eclipse修改为黑色主题

热门文章

  1. linux dhcp mac ip绑定,linux – 如何在dhcpd中通过MAC地址分配IP
  2. html js页面加载前执行,Javascript代码在页面加载时的执行顺序介绍
  3. 2015年二本投档线
  4. 【ubuntu】——安装wps
  5. JPMML调用PMML机器学习模型零基础总结(内含新版本jpmml解决方法)
  6. nbu客户端卸载_NBU客户端安装失败
  7. NRF52840的学习之路(三)
  8. airpods耳机敲击没反应_苹果airpods蓝牙耳机使用感受与使用方法
  9. 【Arduino基础】一位数码管实验
  10. 除了茶颜悦色、文和友?长沙打造旅游城市缺什么?