I don’t think there is something wrong with this. Also I think it is really good that test loss is much lower which means its generalizing well. Here is a little explanation why?
Dropout layer sets some of features to 0. And gradient does not flow backward through those features. In your case 25% of features are dropped making it harder for model to make predictions. In evaluation dropout layer does nothing, making it easier for model to predict. It very rough explanation but something like this happens. If you increase features (e.g increase number of out_channels from 16 to 32 in conv2) train accuracy will increase if thats what you want.