使用Mindspore0.5运行Resnet50Imagenet
引言
自从5月份第一期Mindspore两日集训营开始接触Mindspore以及通过第一期训练营拿到Modelarts昇腾平台公测资格,两个月来已经运行了Mindspore官方仓库中Modelzoo中的AlexNet、Resnet50、Lenet模型配合Cifar10数据集的代码运行。并且不断的调参观察不同参数下的运行结果的不同顺便也练一下调参能力。
自从Mindspore0.3后发现Modelzoo中有了Resnet50ImageNet的代码,于是就有了是不是试一把赫赫有名的Imagnet的训练。最近正好稍微空闲了一下于是就说干就干,试了一下Resnet50ImageNet经过THOR二阶优化和没有经过THOR二阶优化后的运行结果。
一、Resnet算法介绍
卷积神经网络能够很好的提取图片中的特征,并且能够通过降维来减少计算量,在CV领域应用的非常广泛。在早期的卷积神经网络中,往往通过增加网络的深度来获取更好的算法效果,然而随着网络深度的加深,梯度的反向传播路径会越长,由链式法则的原理可以看出,反向传播的路径越长,得到的梯度值越趋近于0,从而导致梯度消失。
残差网络(如图所示)的出现解决这个问题。通过不同的残差网络的组合,构成了一系列的ResNet网络结构,如表所示。
二、THOR二阶优化
大家都了解深度学习训练是一个不断逼近损失函数最小值的一个过程,常见的比喻就好比夜行下山,每一步都会求导,方便选择最陡坡方向,以求最快速度到达山下。而二阶优化就是在一阶求导基础上,再进行求导。好比除了看脚下最陡坡的方向外,再看看下一步的坡是否还通向山下的。低头赶路的同时,还抬头看方向,保证在大方向上没有偏差,对于有一定规模的网络是有非常积极的意义的。
MindSpore在v0.3版本中重磅推出了二阶优化,在平衡了二阶带来的额外计算量,在ResNet网络上达到目标精度(0.759)仅用了42个迭代(epoch),比同样软硬件环境下的一阶优化足足快了近1倍(一阶优化使用了81epoch达到目标精度),训练效率极大提高。
三、ImageNet数据集介绍
ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文,之后就是基于ImageNet数据集的7届ImageNet挑战赛(2010年开始),2017年后,ImageNet由Kaggle(Kaggle公司是由联合创始人兼首席执行官Anthony Goldbloom 2010年在墨尔本创立的,主要是为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台)继续维护。
ImageNet是根据WordNet层次结构组织的图像数据集。在ImageNet中,目标是为了说明每个synset提供平均1000幅图像。 每个concept图像都是质量控制和人为标注的(quality-controlled and human-annotated)。 在完成之后,希望ImageNet能够为WordNet层次结构中的大多数concept提供数千万个干净整理的图像(cleanly sorted images)。
ImageNet是一项持续的研究工作,旨在为世界各地的研究人员提供易于访问的图像数据库。目前ImageNet中总共有14197122幅图像,总共分为21841个类别(synsets),大类别包括:amphibian、animal、appliance、bird、covering、device、fabric、fish、flower、food、fruit、fungus、furniture、geological formation、invertebrate、mammal、musical instrument、plant、reptile、sport、structure、tool、tree、utensil、vegetable、vehicle、person。
四、运行环境
华为云ModelArts平台
昇腾910 * 8
五、运行结果
THOR二阶优化代码执行时间及结果:
代码未做二阶优化执行时间及结果:
六、总结
Resnet50ImageNet_THOR,Mindspore官方介绍如下:
This is an example of training ResNet-50 V1.5 with ImageNet2012 dataset by second-order optimizer THOR. THOR is a novel approximate seond-order optimization method in MindSpore. With fewer iterations, THOR can finish ResNet-50 V1.5 training in 72 minutes to top-1 accuracy of 75.9% using 8 Ascend 910, which is much faster than SGD with Momentum.
大致翻译:这是ResNet-50v1.5使用ImageNet2012数据集通过二阶优化器THOR训练的一个示例。THOR是MindSpore二阶优化方法。由于迭代次数较少,THOR可以在72分钟内完成ResNet-50v1.5使用8块ascend 910训练,可以达到75.9%的精度,这比使用动量的SGD快得多。(能力有限若有翻译错误,还望见谅)
经过THOR二阶优化的代码执行时间去除从OBS桶复制文件到服务器中执行的时间(差不多45分钟左右)和执行完毕清理数据的时间,和官方介绍中说的75分钟时间差不多,精度我运行完是76.09%和官方的75.9%也差不多。
为了看下和没有经过THOR二阶优化过的执行有什么差别,我又使用没有THOR二阶优化的代码执行了一遍,Epoch为90,训练时间也差不多是THOR的1倍不到点,但是训练的进度和使用THOR只有45个epoch比起来只是高了没多少(精度为:76.55%),但是训练时间和epoch几乎翻个倍了。这样看起来,THOR的优势还是比较明显的。
以上内容只是训练实验完成后的随记和个人一些心得,能力有限(太菜了),如有说的不对的地方还望见谅和指出。
- 点赞
- 收藏
- 关注作者
评论(0)