If you are using a high drop probability in Dropout layers, this effect is usually expected.
Alternatively, the initial running stats of the batch norm layers might be better than the actual batch statistics, although this effect would be new to me. Usually you would see a lower training loss than validation.
Could you try to call eval() on all batch norm and dropout layers during training and check the losses again?