【发布时间】:2017-09-15 08:09:19
【问题描述】:
我有两个网络。一个有以下:
总参数:2,246,550
可训练参数:2,246,550
不可训练参数:0
第二个网络总共有大约 333,013 个可训练参数
但在推理时间的情况下,第二个网络需要 0.12 秒 和第一个网络平均分别花费 0.08 秒。
造成这种差异的原因是什么?
【问题讨论】:
标签: machine-learning neural-network deep-learning caffe
我有两个网络。一个有以下:
总参数:2,246,550
可训练参数:2,246,550
不可训练参数:0
第二个网络总共有大约 333,013 个可训练参数
但在推理时间的情况下,第二个网络需要 0.12 秒 和第一个网络平均分别花费 0.08 秒。
造成这种差异的原因是什么?
【问题讨论】:
标签: machine-learning neural-network deep-learning caffe
你不一定能说出来。假设 0.4M 参数网络主要由卷积层组成,而 2M 参数网络由全连接层组成。然后第一个将需要更长的前传。所以它取决于很多东西,包括深度、参数、操作次数等。通常你可以说它取决于乘法的次数。
【讨论】:
虽然参数的数量确实会影响网络的测试时间,但它并不是唯一的因素。您还应该考虑应用学习过滤器/权重的数据/特征的大小。
例如,考虑两个简单的卷积网络:
- net A 有一个 7x7 过滤器
- net B 有一个 3x3 过滤器
很明显,net A 有 49 个参数,而 net B 只有 9 个。
但是,net A 的输入是 150x150 图像,而 net B 的输入是 1500x1500 图像。
显然,在这些设置下,netB 将花费更长的时间来处理输入。
在许多情况下,深度网络将卷积层与全连接层混合在一起,这使得比较“相同大小的输入”的失败次数变得困难/不可能。
顺便说一句,caffe 向compute the number of FLOPS required for a net 添加功能仍然是一个悬而未决的问题。
【讨论】:
当然更大(更复杂的网络)将需要更多时间来评估输入,因为推理需要将输入传播到所有网络才能到达最后一层(输出)。所以它与参数的数量成正比是正常的,即与深度、每层的神经元数量和每两层之间的连接类型相关。
【讨论】: