美文网首页
Chapter - 13 Exercise(1-6)

Chapter - 13 Exercise(1-6)

作者: 博士伦2014 | 来源:发表于2018-11-05 16:44 被阅读0次
    1. 在图像分类任务上,CNN相对于完全连接的DNN有什么优势?
    • 因为连续层只是部分连接而且因为它大量重用其权重,所以CNN比完全连接的DNN具有更少的参数,这使得训练更快降低过度拟合的风险,并且需要更少的训练数据
    • 当CNN学习了可以检测特定特征的内核时,它可以在图像上的任何位置检测到该特征。相反,当DNN在一个位置学习一个特征时,它只能在该特定位置检测到它。由于图像通常具有非常重复的特征,因此使用较少的训练示例,CNN能够比DNN更好地用于图像处理任务(例如分类)。
    • 最后,DNN不知道像素的组织方式;它不知道附近的像素是否接近。 CNN的架构嵌入了这一先验知识。较低层通常识别图像的小区域中的特征,而较高层将较低层特征组合成较大特征。这适用于大多数自然图像,与DNN相比,CNN具有决定性的先机性。
    1. 考虑一个由三个卷积层组成的CNN,每个层都有3×3个内核,2的步幅和SAME填充。最下层输出100个特征图,中间一个输出200,前一个输出400。输入图像是200×300像素的RGB图像。

    A. CNN中的参数总数是多少?
    让我们计算CNN有多少参数。

    (1). 由于第一个卷积层有3×3个内核,输入有三个通道(红色,绿色和蓝色), 然后每个特征图具有3×3×3权重,加上偏差项。这是每个特征图的 3×3×3+1= 28个参数。由于该第一卷积层具有100个特征图,因此它具有总共28 × 100 = 2,800个参数。

    (2). 第二卷积层具有3×3个核,其输入是前一层的100个特征图的集合,因此每个特征图具有3×3×100 = 900个权重,加上偏差项。这是每个特征图的 3×3×100 + 1 = 901个参数。 由于第二卷积层有200个特征图,因此该层具有901×200 = 180,200个参数。

    (3). 最后,第三个和最后一个卷积层也有3×3个核,其输入是前一个层的200个特征图的集合,因此每个特征图具有3×3×200 = 1,800个权重,加上一个偏置项。这是每个特征图的 3×3×200+1 = 1801 个参数 由于它有400个特征图,因此该图层总共有1,801×400 = 720,400个参数。

    总而言之,CNN有 2,800 + 180,200 + 720,400 = 903,400个参数。

    B. 如果我们使用的是32位浮点数,那么在对单个实例进行预测时,该网络至少需要多少RAM?
    现在让我们计算这个神经网络在对单个实例进行预测时需要多少RAM(至少)。

    (1). 首先让我们计算每一层的特征图大小。由于我们使用步幅2和SAME填充,因此特征图的水平和垂直尺寸在每一层被除以2(必要时向上舍入),因此输入通道为200×300像素,第一层的特征地图是100×150第二层的特征地图是50×75第三层的特征地图是25×38

    (2). 由于32位是4字节而第一卷积层有100个特征图,因此第一层占用4 x 100×150×100 = 600万字节(约5.7 MB,考虑到1 MB = 1,024 KB和1 KB = 1,024字节)。

    (3). 第二层占用4×50×75×200 = 300万字节(约2.9MB)。
    (4). 第三层占用4×25×38×400 = 1,52万字节(约1.4MB)。

    然而,一旦计算了一个层,就可以释放前一层所占用的内存,所以如果一切都经过优化,只需要6 + 9 = 1500万字节(约14.3 MB)的RAM(刚刚计算出第二层时,第一层占用的内存尚未释放)。

    但是等等,你还需要添加CNN参数占用的内存。我们之前计算过它有903,400个参数,每个参数使用4个字节,所以这增加了4 × 903,400 = 3,613,600个字节(大约3.4 MB)。

    所需的总RAM是(至少)18,613,600字节(约17.8 MB)。

    C. 在对50个图像的小批量训练时又是什么样呢?
    最后,让我们计算在50个图像的小批量训练CNN时所需的最小RAM量。
    在训练期间,TensorFlow使用反向传播,这需要保持在前向传递期间计算的所有值,直到反向传递开始。因此,我们必须计算单个实例的所有层所需的总RAM,并将其乘以50!让我们开始以兆字节而不是字节计数。我们之前计算过,每个实例的三层分别需要5.7, 2.9 和1.4 MB。

    每个实例总共10.0 MB。因此,对于50个实例,总RAM为500 MB。再加上输入图像所需的RAM,即50×4×200×300×3 = 3600万字节(约34.3 MB),加上模型参数所需的RAM,大约3.4 MB(之前计算过) ,加上梯度的一些RAM(我们将忽略它们,因为它们可以逐渐释放,因为反向传播在反向传递期间向下传播)。

    我们总共大约500.0 + 34.3 +3.4 = 537.7 MB。这真的是一个乐观的最低限度。

    1. 如果你的GPU在训练CNN时内存不足,你可以尝试解决问题的五件事情是什么?
    • 减少小批量。
    • 在一个或多个图层中使用更大的步幅减少维度。
    • 删除一个或多个图层。
    • 使用16位浮点数而不是32位浮点数。
    • 在多个设备上分配CNN。
    1. 为什么要添加最大池化层而不是具有相同步幅的卷积层?
      最大池层根本没有参数,而卷积层有很多参数(参见前面的问题)

    2. 你希望何时添加本地响应规范化层?
      局部响应标准化层使最强激活的神经元在相同位置但在相邻特征图中抑制神经元,它鼓励不同的特征图专门化并将它们分开,迫使它们探索更广泛的特征。

    它通常在较低层中使用,以具有较大的低级特征池,上层可以构建在其上。

    1. 与LeNet-5相比,你能说出AlexNet的主要创新吗?GoogLeNet和ResNet的主要创新又如何?
    • 与LeNet-5相比,AlexNet的主要创新是:(1)它更大更深,(2)它将卷积层直接叠加在一起,而不是在每个卷积层的顶部堆叠池化层。

    • GoogLeNet的主要创新是引入了初始模块,这使得有可能拥有比以前的CNN架构更深的网络,参数更少。

    • ResNet的主要创新是引入了跳跃连接,这使得它可以超越100层。 可以说,它的简单性和一致性也相当具有创新性。

    相关文章

      网友评论

          本文标题:Chapter - 13 Exercise(1-6)

          本文链接:https://www.haomeiwen.com/subject/veusxqtx.html