Keras - Autoencoder different from Encoder + Decoder
When you do autoencoder.fit, your model is learning something so your weights are changing for the encoder model and decoder model. 
After that while creating your encoder/Decoder like "encoder = Model(inputs=x, outputs=Encoder()(x), name='encoder')", you are creating another encoder model with differnt weights, you have to use the same weight vectors. 
Check "autoencoder.layers[1].get_weights()" is equal to "encoder.get_weights()" or not, then you will get to know what is happening in the model.( similar thing for decoder as well). You can check that using below code, 

for i in range(len(autoencoder.layers[1].weights)):
    print((autoencoder.layers[1].get_weights()[i]==encoder.get_weights()[i]).all())