我有两个网络。一个具有以下:
总参数:2,246,550可训练的参数:2,246,550不可训练的参数:0
和第二个网络大约有总可训练参数333,013
但在推断时间的情况下,第二个网络花费了0.12秒和第一个网络平均耗时0.08秒。
造成这种差异的原因是什么?
您不一定能说出来。假设0.4M参数网络主要由卷积层组成,而2M参数网络则由完全连接的层组成。然后第一个将需要更长的前进距离。因此,它取决于很多因素,包括深度,参数,操作数等。通常,您可以说它取决于乘法数。
尽管参数的数量确实会影响网络的测试时间,但这并不是唯一的因素。您还应该考虑应用学习的过滤器/权重的数据/功能的大小。
例如,考虑两个简单的转换网络:-净A
具有单个7x7过滤器-净B
具有单个3x3滤镜
很明显,网络A
具有49个参数,而网络B
仅具有9个参数。但是,净值A
的输入是150x150图像,而净值B
的输入是1500x1500图像。显然,在这些设置下,网络B
将需要更长的时间来处理输入。
[在很多情况下,深网将conv层与完全连接的层混合在一起,这使得很难/不可能比较“相同大小的输入”的触发器数量。
顺便说一句,仍然是一个尚待解决的问题,是向compute the number of FLOPS required for a net添加功能的Caffe。
当然,较大的(较复杂的网络)将花费更多时间来评估输入,因为推理需要通过所有网络传播输入以到达最后一层(输出)。因此,通常与参数的数量成正比,即与深度,每层神经元的数量以及每两层之间的连接类型相关。