Upon some further investigation I realized my conception of batch normalization was incorrect, and it should be applied sample-wise following dense layers. However, PyTorch does not help this confusion by labeling the output shape parameter num_features, which led me to believe batch normalization is applied feature-wise for both convolutional and dense layers.