For each image 64 output channels will be created. The activation output shape of the conv layer will be [batch_size, out_channels, height, width].


The majority of PyTorch operations work on batched data, which will apply the desired operation on each sample in a vectorized way.


If you are using the default setup with groups=1, each filter kernel will use all input channels. Have a look at CS231n - Convolutions 2 for a good explanation. I’m not sure, what the norm argument does and it seems to be a custom implementation.


The backward() call only calculates the gradients. The parameter updates will be performed by optimizer.step(), which uses the calculated .grad attributes in all parameters to update them.