I want to seperate the encoder and the decoder after training the model. Can any one help me as am new to deep learning

This is my code

#the model
nstrides = (1,1)

from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.models import Sequential
from keras.layers import Dense, Activation

#first we define the inputs, which is the shape of images defined in the code blocks above
inputs = layers.Input(imshape)

#block1
conv01 = layers.Conv2D(32, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(inputs)
conv1 = layers.Conv2D(32, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv01)
pool1 = layers.MaxPooling2D(pool_size=(2, 2))(conv1)

#block2
conv02 = layers.Conv2D(64, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(pool1)
conv2 = layers.Conv2D(64, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv02)
pool2 = layers.MaxPooling2D(pool_size=(2, 2))(conv2)

#block3
conv03 = layers.Conv2D(128, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(pool2)
conv3 = layers.Conv2D(128, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv03)
pool3 = layers.MaxPooling2D(pool_size=(2, 2))(conv3)

#block4
conv04 = layers.Conv2D(256, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(pool3)
conv4 = layers.Conv2D(256, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv04)
pool4 = layers.MaxPooling2D(pool_size=(2, 2))(conv4)

#bottlneck
conv05 = layers.Conv2D(512, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(pool4)
conv5 = layers.Conv2D(512, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv05)
upconv5 = layers.Conv2DTranspose(256, kernel_size=(2, 2), strides = (2,2))(conv5)

#upblock 1
conc6 = layers.concatenate([upconv5, conv4])
conv06 = layers.Conv2D(256, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conc6)
conv6 = layers.Conv2D(256, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv06)
up7 = layers.Conv2DTranspose(126, kernel_size=(2, 2), strides = (2,2))(conv6)

#upblock 2
conc7 = layers.concatenate([up7, conv3])
conv07 = layers.Conv2D(128, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conc7)
conv7 = layers.Conv2D(128, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv07)
up8 = layers.Conv2DTranspose(64, kernel_size=(2, 2), strides = (2,2))(conv7)

#upblock 3
conc8 = layers.concatenate([up8, conv2])
conv08 = layers.Conv2D(64, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conc8)
conv8 = layers.Conv2D(64, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv08)
up9 = layers.Conv2DTranspose(32, kernel_size=(2, 2), strides = (2,2))(conv8)

#upblock 4
conc9 = layers.concatenate([up9, conv1])
conv09 = layers.Conv2D(32, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conc9)
conv9 = layers.Conv2D(32, 4, activation = ‘relu’, strides = nstrides, padding=“same”)(conv09)

#we define the outputs here
outputs = layers.Conv2D(1, (1, 1), padding=“same”, activation=“sigmoid”)(conv9)

#combine the model together
model = Model(inputs, outputs)

#and print out the text summary of the model
model.summary()

The code you posted is using keras, while this is PyTorch forum. Nonetheless, I think you can refer to this tutorial, where they construct a VAE model with separated Encoder and Decoder.