output1 and output2 might be different, if dropout is applied.
The internal running stats of all batchnorm layers will be updated in both forward passes.
This would mean, that the output after calling model.eval() would give a different result:
model.train()
output1 = model(input)

model.eval()
output1_eval = model(input)

model.train()
output2 = model(input)

model.eval()
model2_eval = model(input)

Here modelX_eval would be different even though dropout is deactivated, since the batchnorm stats were updated.