BossyMicrobe:

but I don’t understand what the need for the in_channels. It’s my understand that the process will use the same filters for each in_channel? so are these filters just duplicates or are they all different?


Each filter will use different weights for the input channels, i.e. the weight of [16, 8, 5, 5, 5] will contain 16 filters each with a weight matrix of [8, 5, 5, 5] (with different values). The weight matrix will be multiplied with the input (of the same shape) for each window.
CS231n - Convolution explains this quite well for nn.Conv2d.