Convert tensorflow saved_model from float32 to float16

I have a tensorflow saved model with float32 weights in a directory structure like below,

large_model\
    variables\
        variables.data-00000-of-00001   (3.6GB)
        variables.index
    saved_model.pb

I would like to cast all weight to float16 in order to reduce the size of the model. I have found tf.cast() method that can be applied to tensors. But it seems that there is no such method for casting the whole weights of a model. I guess that I have to read all layers of the model one by one and manually cast the weight to float16 and then save it using model.save(), but I don’t know how to do that.

Note1: I do NOT have access to the python code of the model definition, only the saved model.

Note2: I do NOT want to save it as tflite format.

@Rasoul did you give a try to steps in here?

Well, I have clearly mentioned that I don’t want to use tflite.