These are calibration values, estimating long-term moments of layer inputs. If you make them trainable, it is no longer a normalization layer.
And to train a weighted averaging coefficient you need a sequence of at least two values in one batch.



 BaruchYoussin:

running_mean and running_var are used in calculating the layer output, and for this reason backward() needs their gradients.


this statement is wrong, that’s not how reverse mode autodiff works.