Hi, I would say that it can be explained by the dropout layers present in the network.
Dropout are activated only on training time.
During the training at each step, dropout deactivates some weights for the forward pass. It helps avoiding overfitting but reduce the local performance for the current step.
Where as during evaluation, the dropout doesn’t deactivate any weight, so you have a complete neural network, that may perform better on a same model state.