4

我正在尝试将模型从 caffe 重写为 tensorflow。为了确保我没有犯错,我数了一下 macc 和 Flops,然后我发现了这个有趣的事情:

例如,当输入一个 112x112x3 的图像,并用 32 个 3x3 的 kernel,stride=1 对其进行 conv2d 处理时,Caffe 中的 macc 为 2.71M,而 tensorflow 中计算的 FLOPs 为 5. 42M。

我想知道为什么会发生这种 2 倍的差异?

4

2 回答 2

5

一个 MACC 包含一个乘法和一个加法。一次乘法或一次加法可以看作是一次 FLOP。所以一个 MACC 有两个 FLOPS。

于 2019-04-09T00:36:54.460 回答
1

我不是这方面的专家,但 FLOPS 意味着每个浮点运算,而不仅仅是相乘或累加。执行的 FLOPS 将比 MACS 执行的多。

我还在某处读到,如果 MAC 用于浮点性能,并且两次测量的循环开销和内存带宽相同,则通常认为 1 个浮点乘法累加等于 2 个 FLOP。一个用于乘法运算,第二个用于累加器中的加法运算。

于 2018-09-03T09:12:52.560 回答