【问题标题】:How to count Multiply-Adds operations?如何计算乘加运算?
【发布时间】:2018-12-07 05:04:36
【问题描述】:

给定一个已定义的卷积神经网络,是否有一个函数或方法可以计算Multiply-Adds 操作的数量?

该术语是在MobileNetV2 论文中引入的:https://arxiv.org/pdf/1801.04381.pdf

我们评估准确性和操作次数之间的权衡 通过 multiply-adds (MAdd) 以及实际延迟和 参数个数。

【问题讨论】:

    标签: tensorflow deep-learning conv-neural-network


    【解决方案1】:

    计算Multiply-Add 操作相当于计算模型的 FLOP。这可以使用 tensorflow 的分析器来实现。

    flops = tf.profiler.profile(graph,\
         options=tf.profiler.ProfileOptionBuilder.float_operation())
    print('FLOP = ', flops.total_float_ops)
    

    请务必查看this answer 中解释的注意事项。基本上:

    • 计算的 FLOP 数量可能包括初始化操作,例如从使用高斯分布初始化权重的 Multiply-Add,您需要冻结图表以规则那些可能不相关的 Multiply-Add 操作,
    • TensorFlow 的乘加计算是近似的。已针对此问题打开了一个问题here

    【讨论】:

    【解决方案2】:

    我不确定某个功能,但是这个网站应该可以帮助您跟踪 MulAdd 操作,唯一需要注意的是您可能需要 prototxt 文件,但对于流行的架构,MulAdd 操作已经列出

    -https://dgschwend.github.io/netscope/quickstart.html

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-14
      • 2018-07-13
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 2016-11-15
      相关资源
      最近更新 更多