首页 > 金融

速度高达0.76秒!

2021-08-12 19:18 作者:醉言 来源:TechWeb   阅读量:6813   

关于MNIST的培训可以说是计算机视觉方面的,你好,世界,任务。

而且如果用PyTorch的标准代码训练CNN,一般需要3分钟左右。

但是现在,在笔记本电脑上,时间可以缩短200多倍。

速度高达0.76秒!

那么,你是如何在一次历元训练中达到99%的准确率的呢。

八步加速200倍

这是一款搭载GeForce GTX 1660 Ti GPU的笔记本。

我们还需要Python3.x和Pytorch 1.8。

先下载数据集进行训练,每次训练14 epoch。

此时,测试集中两次运行的平均准确率为99.185%,平均运行时间为2分52s plusmn38.1毫秒.

接下来,一步步减少训练时间:

3到5个纪元后,当测试准确率达到99%时,将提前停止训练。

此时训练时间减少约1/3,达到57.4splusmn6.85秒.

第二,缩小网络规模,采用正则化技术加快收敛速度

具体来说,在第一个conv层之后添加2x2 max池层,以将完全连接层的参数减少4倍以上。

然后删除两个脱落层中的一个。

这样,需要收敛的历元数减少到3个以内,训练时间也减少到30.3splusmn5.28秒.

第三,优化数据加载

使用data_loader.save_data将整个数据集保存到磁盘上以前处理模式的pytorch阵列中。

也就是说,不是一次又一次地从磁盘读取数据,而是将整个数据集加载并保存在GPU内存中一次。

此时,我们只需要一个历元就可以将平均训练时间减少到7.31s plusmn1.36秒.

第四,增加批量

将批量从64增加到128,平均训练时间减少到4.66秒plusmn583毫秒.

第五,提高学习率

超收敛被用来代替指数衰减。

训练开始时学习率为0,然后在中期线性达到最高值,然后慢慢降到0。

这让我们的训练时间降到了3.14splusmn4.72毫秒.

第六,再次增加批量,缩小网络规模

重复步骤2,将批量增加到256。

重复第四步,去除剩余的脱落层,并通过减小卷积层的宽度进行补偿。

最后,平均时间减少到1.74秒,18.3毫秒.

第七,最后的微调

首先,在激活线性校正功能之前,移动最大采样层。

然后,卷积核的大小从3增加到5。

最后进行超参数调整:

使学习率为0.01,beta1为0.7,bata2为0.9。

到这个时候,我们的训练已经缩减到了一个纪元762msplusmn在24.9 ms内准确率为99.04%。

这只是一个你好世界的案例,

对于这个最终结果,有人认为是家常便饭:

优化数据加载时间,减少模型大小,用ADAM代替SGD等等,都是常识性的东西。

我认为没有人会真的费心去加速运行MNIST,因为这是机器学习的现状,你好,世界,重点只是向您展示最小的键值,并让您熟悉这个框架mdashmdash其实三分钟也不长。

有网友认为大部分人的工作不在MNIST这样的超级集群。因此,他说:

我想要的是更加专注于真正减少训练时间。

声明:本网转发此文章,旨在为读者提供更多信息资讯,所涉内容不构成投资、消费建议。文章事实如有疑问,请与有关方核实,文章观点非本网观点,仅供读者参考。

猜您喜欢

图文推荐