模型的大小,深度和参数数量如何影响培训时间?

时间:2018-04-21 10:08:21

标签: tensorflow machine-learning keras

我找到了一个表格,描述了Keras.Applications模块支持的每个模型的大小,深度和参数数量(https://keras.io/applications/下的"各个模型的文档")。我想根据它的准确性选择一个模型,与培训所花费的时间相比,

我假设参数的数量直接影响训练时间,因为你拥有的参数越多,梯度下降的计算难度就越大。但是有些型号,特别是VGG16,有很多参数和非常低的深度。或者DenseNet121和Xception,两者的深度非常相似,但参数和大小的差异非常大,单位为MB。

尺寸和深度是否也会影响训练所需的时间?如果是这样,以什么方式?训练时间是否与参数数量呈线性关系?

1 个答案:

答案 0 :(得分:0)

深度不是问题,但是参数的数量很重要,而你没有提到的,输入的大小也很重要。

首先,如果你使用视觉网络,那么你可能有很多卷积层。如果您将 300 x 300 图片提供给您的网络,并假设第一层是 3 x 3 内核卷积大步 2 ,输出通道 100 ,然后网络将运行 整个图像上的内核为300 x 300 ,执行 150 x 150 x 3 x 3 x 100 = 20,250,000 前向传播计算,即使 3 x 3 内核仅包含 9 参数,因此使用 100 输出频道 900 ,这是一个微不足道的数字。

不同的层也有不同的计算要求。例如,丢失层非常便宜。 logit或softmax要贵得多。批量标准化也增加了很多,因为它必须计算激活的标准偏差,这需要大量的平方。 Relu再次,超便宜,它的发明是2014年计算机视觉突破的主要因素之一。想想这样:加入是非常便宜的。乘法很便宜。任何涉及对数或取幂的东西都很昂贵。 (如果作为乘法进行,则平方可以很便宜。)梯度计算是基于取导数完成的,因此无论您对前向传播进行何种操作,还要考虑它的衍生物是什么,因为这将决定向后传播的时间要求。

培训时间估算起来更加棘手,因为经过良好调整的超参数集(学习率,学习率退火等)对此有很大的影响,不同的架构对它们有不同的最佳选择。

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

总而言之,我希望我能给你一些指示。但是,除了一些非常明确的案例外,我担心我无法真正省去实验的麻烦。