【问题标题】:Calculation FLOPs of adaptive_avg_pool2dAdaptive_avg_pool2d 的计算 FLOPs
【发布时间】:2021-07-21 11:30:46
【问题描述】:

我发现了几个 FLOPs 的定义来对抗 Adaptive_avg_pool2d 的翻牌:

  1. fvcore 开始,它将 FLOP 定义为
1 * prod(input)

1 x N x C_in x H_in x W_in

  1. 另一个定义是从输出的角度。我从here 找到了一个:

它首先计算内核大小,例如,(kx, ky)

然后计算翻牌为

( kx*xy +1 ) * prod(output)

(k_x x k_y + 1) x (N x C_out x H_out x W_out)

哪个定义是正确的?有计算FLOPs的资料吗?

【问题讨论】:

    标签: machine-learning pytorch conv-neural-network


    【解决方案1】:

    请参阅this questionthis answer 了解torch.nn.Adaptive{Avg, Max}Pool{1, 2, 3}d 的工作原理。

    本质上,它试图减少池内核的重叠(torch.nn.{Avg, Max}Pool{1, 2, 3}d 不是这种情况),尝试只检查每个输入元素一次(不确定是否成功,但可能是)。

    FLOPS 是指每秒浮动操作,因此,如果每个输入浮点值仅被“触摸”一次(按输入的分组部分的最大值或平均值),则它等于:

    1 * prod(input)
    

    要从此值获得 FLOPS,您必须将其除以通过 1 * prod(input) 浮点运算所需的时间。

    第二个公式对于池化似乎是正确的,而不是自适应公式。

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 2021-10-17
      相关资源
      最近更新 更多