首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型的大小、深度和参数数对训练时间有什么影响?

模型的大小、深度和参数数对训练时间有什么影响?
EN

Stack Overflow用户
提问于 2018-04-21 10:08:20
回答 1查看 899关注 0票数 1

我找到了一个表,描述了Keras.Applications模块支持的每个模型的大小、深度和参数数(https://keras.io/applications/在“各个模型的文档”下)。我想选择一个模型,它的准确性与训练所需的时间相比较

我假设参数的数量直接影响训练时间,因为参数越多,梯度下降的计算难度就越大。但是有些模型,特别是VGG16模型,具有很多参数和很低的深度。或者DenseNet121和Xception,它们都有非常相似的深度,但MB中的参数数和大小却非常不同。

大小和深度也会影响训练所需的时间吗?如果是的话,以什么方式?训练时间是否与参数数成线性关系?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-21 17:31:58

深度不是一个问题,但是参数的数量非常重要,而且您没有提到的是,输入的大小也很重要。

首先,如果你使用视觉网络,那么你可能有很多卷积层。如果您将一个300 x 300图像提供给您的网络,并且假设第一层是具有跨步长的23 x3内核卷积,输出通道100,那么网络将在整个图像上运行300 x 300E 29>内核,执行E 110150 x 150 x 3x3x100=20,250,000E 211的前向传播计算,尽管E 1123x3内核具有99E215/代码>的代码参数,所以代码<<100代码<<>代码>输出代码><>代码><< first 2 1 7>代码><代码><代码><代码><代码><<219><><代码><<219><代码><,<代码>代码>输出代码><.

不同的层也有不同的计算要求。例如,辍学层是超级便宜的。logit或softmax要贵得多。批量规范化也增加了很多,因为它必须计算激活的标准差,这需要大量的平方。再一次,Relu是超级便宜,它的发明是主要因素之一,使计算机视觉在2014年的突破。想想看:加法是超便宜的。乘法很便宜。任何涉及对数或指数的东西都是昂贵的。(如果以乘法的形式进行平方运算,可能会很便宜。)梯度计算是基于导数,所以无论你对前向传播有什么运算,也要考虑它的导数是什么,因为这将决定向后传播的时间要求。

训练时间更难估计,因为一个调整良好的超参数集(学习速率、学习速率、退火等等)对此有很大的影响,不同的体系结构对它们有不同的优化。

此外,这都是假设网络下的基础设施不是瓶颈。如果您不能足够快地从磁盘(或内存,如果您有足够的内存,并预取和缓存数据)或PCI-E总线不能足够快地处理数据传输(特别是在多GPU环境中),那么这也会对培训时间产生不利影响。如果您使用的是云服务,那么您甚至可能没有如何设置云服务的信息。

总之,我希望我能给你一些建议。但恐怕我不能给你省去实验的麻烦,除了一些非常明确的案例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49954631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档