Thanks for your explaination, I think it’s quite valid and make sense.
So currently, we have a dataset, and we perform whitening/normalization, then we apply dataloader to generate minibatch, the minibatch maynot follow the dataset distribution right, i.e. mean for minibatch maynot be exactly 0(like the red dots shown in graph)? so that is why we also apply batchnrom to make sure the batch is 0-centered:

1111912×400 109 KB

but what I firstly come in mind is somthing like this:

2222014×408 151 KB

I dont really care the distribution of the dataset, I just directly use them to generate minibatch(red dots), but for every minibatch i do whitening(we calculate the matrix every batch) so i make sure every minibatch is 0-centered, and then maybe I don’t need BatchNorm layers??
and also this approach should not have any problem during testing, because the distribution of test is not important as we whitening on batch
This is something which I feel the main stream approach is different from mine…
 and I get confused about it…I want to know where I miss something…