For point 1:
In the init function, you have written self.batch=BatchNorm2d(64)
In the forward function, you are calling “self.batch” 15 times. I believe since you are reusing the  declared variable (“self.batch”), your print of the model does not show this 15 times.
For point 2, in the PDF, it states, “The loss function is the sum square value
of each pixel between ground truth images and recovered images”.  Can you try MSE in Pytorch?