0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

网络架构对ResNet训练时间有什么影响

zhKF_jqr_AI 来源:未知 作者:易水寒 2018-11-17 11:23 次阅读

目前为止,我们使用的都是固定网络架构,即在CIFAR10上用单个GPU最快的DAWNBench记录,经过简单改变,我们将网络达到94%精度的时间从341秒缩短至154秒。今天,我们要研究其他的替代性架构。

让我们先回顾下目前所用的网络:

粉色的残差块包含了一个identity shortcut并保留了输入的空间和通道维度:

浅绿色的下采样模块将空间分辨率降低两倍,输出通道的数量增加一倍:

加入残差模块的原因是通过在网络中创建shortcut让优化变得更简单。我们希望较短的路径代表相对容易训练的浅层子网络,而较长的路径可以增加网络的能力和计算深度。这样一来,研究最短路径如何通过网络孤立训练,并且如何采取措施进行改进似乎是合理的。

清除长分支会生成一下主要网络,其中除了第一个网络,所有的卷积网络的步长都为2:

在接下来的实验中,我们会训练20个epoch,利用比之前学习速率更快速的版本训练,因为网络较小,收敛得更快。复现这一结果的代码在此:github.com/davidcpage/cifar10-fast/blob/master/experiments.ipynb

对最短的路径网络训练20个epoch,在36秒内的测试精度仅达到55.9%。删除掉重复的批标准化ReLU群组,将训练时间缩短到32秒,但是测试精度仍然不变。

这一网络有个严重的缺陷,即下采样卷积有1×1的核以及为2的步长,所以与其扩大接受域,它们反而会抛弃信息。如果我们用3×3的卷积替换,测试精度在36秒的训练后达到了85.6%。

我们还能继续对下采样进行优化,使用3×3、步长为1的卷积,并且后面跟一个池化层。我们选择最大池化和2×2的窗口大小,43秒训练后的测试精度为89.7%。用平均池化法得到相似的结果,但时间稍长。

分类器前的最后一个池化层是全局平均池化层和最大池化层的连接,从原始网络中得来。我们用更标准的全局最大池化层替换它,并且将最终的卷积层的输出维度变为原来的两倍,对输入维度进行补偿,最终在47秒内,测试精度达到了90.7%。注意,这一阶段的平均池化层并不如最大池化层。

默认情况下,在PyTorch0.4中,初始批规范化的范围在0到1之间随机选择。初始接近0的通道可能被浪费,所以我们用常数1来替代。这导致通过网络中的信号更大。为了补偿,我们提出了一种整体恒定惩罚对分类器进行重新调整。对这一额外超参数,大致的手动优化值是0.125。经过这些改变,经过20个epoch的训练,网络在47秒内达到了91.1%的测试精度。

下表总结了我们上文中提到的各种改进步骤:

现在的网络看起来没什么问题了,接下来我们要进行收益递减,添加一些图层。目前网络仅有5个图层(四个卷积,一个全连接层),所以还不确定我们是否需要残差分支,或者添加额外的层后能否得到94%的目标精确度。

如果只增加宽度似乎不可行。如果我们让通道维度增加一倍,训练60个epoch后,可以达到93.5%的精确度,但是会用321秒。

在增加网络深度方面,我们还面临着多种问题,例如不同的残差分支类型、深度和宽度以及新的超参数,例如初始范围和残差分支的偏见。为了让结果更进一步,我们要严格限制搜索空间,所以,不能调整任何新的超参数。

特别的是,我们要考虑两种类型的网络。第一种是选择性地在每个最大池化层后添加一个卷积层。第二种是添加一个含有两部分3×3卷积的残差块,其中有identity shortcut,也是在最大池化层之后添加。

我们在最后卷积模块后、全局最大池化层之前插入了一个2×2的最大池化层。是否添加新层要根据不同情况决定,我们还考虑混合两种类型,但这并没有提升性能,所以我们就不在此展开了。

下图是第一种网络示例,其中我们在第二个最大池化层之后添加了额外的卷积:

下图是第二种网络示例,其中我们在第一和第三层之后添加了残差分支:

现在要开始“暴力”架构搜索了!我们训练了15种网络(经过改进的原始网络和上述两类网络中每类的7种变体),各训练20个epoch,另外还对比了训练22个epoch的结果,了解训练时间增长和更深的网络架构之间的差别。如果每个实验仅运行一次,就会花费30分钟的计算时间。但不幸的是,每次最终测试精度的标准偏差约为0.15%。所以为了得出准确的结果,我们会对每个实验运行10次,将每个数据点的标准偏差控制在0.05%左右。即便如此,不同架构之间从20到22个epoch运行后改进率之间的差异主要可能是噪音。

以下是结果,点表示20个epoch和精确度,线条的延伸表示22个epoch的结果:

与运用更深层的架构所得到的进步相比,训练更长时间所得到的进步速度似乎很慢。在测试的框架中,最有前景的或许是Residual:L1+L3。网络在66秒内达到了93.8%的精确度,如果我们将训练扩展到24个epoch,平均精确度为94.08%,训练时间为79秒。

目前为止,我们已经得到了一个9层的深度残差网络,能在79秒内达到94%的训练精确度,几乎将训练时间缩短了一半。最后还有一个问题:我们是否真的需要残差分支才能让测试精确度达到94%?答案显然是否定的。例如,单一的分支网络Extra:L1+L2+L3能在180秒、60个epoch内达到95%的精确度,加上正则化或更宽的版本后,精确度会更高。但是至少在现在最快的是一个残差网络。

结语

本文结束前,让我们再简单回顾一下研究的目的。很多观点认为,训练模型在CIAFR10上达到94%的测试精确度是无意义的行为,应为现在最高的精确度都达到98%了(另外还有人认为现在ImageNet才是“唯一”的数据集,其他实验只是浪费时间罢了)。

事实上,我们可以通过9层网络在24个epoch内达到94%的精确度,这也再次说明我们的目标门槛过低。另一方面,人类在CIFAR10上的表现也在94%左右,所以这一情况并不清楚。

在某种程度上,现在的精确度是一种“病态”的目标,只追求更大的模型、调整更多超参数、更多数据增强或者更长的训练时间,让各种工作之间的比较更难。另外,在训练或结构设计上的创新会带来额外的超参数维度,并且调整这些参数可能会导致有关训练更好的隐式优化,否则这些与研究中的扩展无关。如果基础模型的外显超参数的维度空间较低,那么通常被认为是最佳的对比试验无法解决该问题。这种情况的结果是,最先进的模型难以进行比较、复现、重建。

有了这些问题,我们认为任何能轻易在各项实验中进行比较的都是有益的。我们相信创建有竞争力的基准也是应对挑战的一种方法。资源的限制让各实验之间的比较更公平,减少了为了培训所需要做的调整。模型多余的复杂性可能会受到资源限制基线的惩罚,哪些明确控制相关参数的方法通常会获胜。

最近,根据模型推理时间或模型大小公布曲线越来越多。这对于优化和解决上面的问题来说都是积极的方法,但我们相信训练时间所带来的额外正则化会有更多好处。另一方面,优化训练时间并不考虑推理成本是否是次优的,这也是为什么我们的训练时间结构总是包含测量每个epoch中测试集的时间,并且我们避免了类似测试时间增强等技术,它可以在推理时减少训练时间。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4661

    浏览量

    128526
  • 网络架构
    +关注

    关注

    1

    文章

    92

    浏览量

    12537

原文标题:如何训练你的ResNet(四):网络架构对训练时间的影响

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深度学习与图神经网络学习分享:CNN经典网络之-ResNet

    深度学习与图神经网络学习分享:CNN 经典网络之-ResNet resnet 又叫深度残差网络 图像识别准确率很高,主要作者是国人哦 深度
    的头像 发表于 10-12 09:54 972次阅读
    深度学习与图神经<b class='flag-5'>网络</b>学习分享:CNN经典<b class='flag-5'>网络</b>之-<b class='flag-5'>ResNet</b>

    一文读懂物体分类AI算法:LeNet-5 AlexNet VGG Inception ResNet MobileNet

    %左右,远低于人眼的5.1%。本文主要讲解各种网络模型的结构,他们的特点,以及这些特点为何能减少训练时间和降低错误率。2 LeNet-5LeNet-5的出现标志着CNN卷积神经网络在A
    发表于 06-07 17:26

    优化神经网络训练方法哪些?

    优化神经网络训练方法哪些?
    发表于 09-06 09:52

    如何进行高效的时序图神经网络训练

    现有的图数据规模极大,导致时序图神经网络训练需要格外长的时间,因此使用多GPU进行训练变得成为尤为重要,如何有效地将多GPU用于时序图神经网络
    发表于 09-28 10:37

    YOLOv6中的用Channel-wise Distillation进行的量化感知训练

    1、YOLOv6中的用Channel-wise Distillation进行的量化感知训练来自哪里  知识蒸馏 (KD)已被证明是一种用于训练紧凑密集预测模型的简单有效的工具。轻量级学生网络通过
    发表于 10-09 16:25

    【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类

    【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类
    发表于 12-19 22:34

    形象的理解深度网络架构

    在过去几年里,许多计算机视觉相关的深度学习的发展,都可以归结于少数几个神经网络架构。抛开所有关于数学、代码和实现的细节,来探索一个简单的问题:这些模型如何工作以及为什么工作? 在撰写
    发表于 09-22 17:05 0次下载
    形象的理解深度<b class='flag-5'>网络</b><b class='flag-5'>架构</b>​

    索尼发布新的方法,在ImageNet数据集上224秒内成功训练ResNet-50

    近年来,许多研究人员提出了多种方案来解决这两个问题(见原文参考文献)。这些工作利用ImageNet/ResNet-50训练来衡量训练效果。ImageNet/ResNet-50分别是最流
    的头像 发表于 11-16 10:01 9771次阅读

    百度大脑EdgeBoard计算卡基于Resnet50/Mobile-SSD模型的性能评测

    GPU: V100 16GB VMem Edgeboard 训练模型 模型使用AIStudio 进行训练,RESNET、MOBILE训练和预测代码
    发表于 10-30 07:32 948次阅读

    首个关于深度神经网络训练相关的理论证明

    实验中,他们将一个实际的神经网络训练过程与线性模型的训练过程相比,发现两者高度一致。这里用到的神经网络是一个wide ResNet,包括Re
    的头像 发表于 04-17 11:15 3090次阅读
    首个关于深度神经<b class='flag-5'>网络</b><b class='flag-5'>训练</b>相关的理论证明

    基于改进U-Net网络建立HU-ResNet模型

    Imagenet预训练Resnet34残差网络作为编码器,以保留裂缝细节信息并加速网络收斂,引入scSE注意力机制模块在空间和通道重新标定编码块与解码块的输岀特征,并利用超柱模块融
    发表于 03-17 10:12 12次下载
    基于改进U-Net<b class='flag-5'>网络</b>建立HU-<b class='flag-5'>ResNet</b>模型

    深度解析MLPerf竞赛Resnet50训练单机最佳性能

    MLPerf是一套衡量机器学习系统性能的权威标准,于2018年由谷歌、哈佛、斯坦福、百度等机构联合发起成立,每年定期公布榜单成绩,它将在标准目标下训练或推理机器学习模型的时间,作为一套系统性能的测量
    的头像 发表于 11-09 17:05 1314次阅读

    PyTorch教程8.6之残差网络(ResNet)和ResNeXt

    电子发烧友网站提供《PyTorch教程8.6之残差网络(ResNet)和ResNeXt.pdf》资料免费下载
    发表于 06-05 10:08 0次下载
    PyTorch教程8.6之残差<b class='flag-5'>网络</b>(<b class='flag-5'>ResNet</b>)和ResNeXt

    MATLAB如何使用训练好的网络

    的实现和应用变得简单易行。 MATLAB神经网络概述 MATLAB提供了多种神经网络架构,如前馈神经网络、卷积神经网络(CNN)、循环神经
    的头像 发表于 07-03 10:06 918次阅读

    怎么对神经网络重新训练

    重新训练神经网络是一个复杂的过程,涉及到多个步骤和考虑因素。 引言 神经网络是一种强大的机器学习模型,广泛应用于图像识别、自然语言处理、语音识别等领域。然而,随着时间的推移,数据分布可
    的头像 发表于 07-11 10:25 395次阅读