I have an input tensor of shape $\mathbf{(3, 32, 32)}$ consisting of 3 channels, 16 rows, and 16 columns. I want to convolve the input tensor using $\mathbf{(3 \times 3)}$ kernel/filter. How can I calculate the required FLOPs?
-
$\begingroup$ FLOPs required to compute it $\endgroup$– Mhasan502Aug 11, 2021 at 8:53
-
$\begingroup$ First, do you know what a FLOP is? $\endgroup$– user253751Aug 11, 2021 at 8:54
-
$\begingroup$ Floating point operations $\endgroup$– Mhasan502Aug 11, 2021 at 9:11
-
$\begingroup$ And do you know how to calculate the output? If you know how to calculate the output, you should be able to count the FLOPs in the calculation. $\endgroup$– user253751Aug 11, 2021 at 9:13
-
$\begingroup$ I don't know how to. That's why I asked the question $\endgroup$– Mhasan502Aug 11, 2021 at 9:14
1 Answer
Each output pixel channel is a 3x3x3 filter, so 27 inputs which get multiplied by 27 weights and then added together. This is 27 FMA (fused-multiply-add) operations, or 27 multiply operations and 26 additions. I believe all modern devices implement FMA.
The number of output pixel channels is 30x30x3 = 2700 (as a 3x3 kernel shaves off one pixel on each edge) and each one takes 27 operations to calculate. So that's 72900 operations in total.