I think I don't understand group convolutions well. Say you have 2 groups. This means that the number of parameters would be reduced in half. So assuming u have an image and 100 channels, with a filter size of 3x3, you would have 900 parameters (ignore the bias for this example). If you separate this in 2 groups, if I understand it well, you would have 2 groups of 50 channels. This can be made faster, by running the 2 groups in parallel, but how does the number of parameters gets halved? Isn't each group having 50*9=450 parameters, so in total you still have 900 parameters. Do they mean that the number of parameters that the backpropagation goes over (in each branch) gets halved? Because overall, I don't see how it can get reduced. Also, is there a downside in using more groups (even going to 100 groups of 1 channel each)? Thank you!

  • 1
    $\begingroup$ Hi. Could you edit your question to include a link to the definition of group convolution that you're using? $\endgroup$ – Philip Raeisghasem Apr 11 '19 at 3:01

The number of parameters is filters*input_channels*output_channels

Groups are formed among input and output channels.

So instead of input_channels*output_channels with two groups you get (input_channels/2)*(output_channels/2) + (input_channels/2)*(output_channels/2)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.