Skip to content

Keras Exported Model shows very low accuracy in Tensorflow Serving #7848

Closed
@vijayg78

Description

@vijayg78

Hi,
I have a trained xception model with keras & tensorflow for 8 classes. With the validation set it already gives 95% accuracy.

I exported the model with the following code.


import sys
import os
from keras.layers import *
from keras.optimizers import *
from keras.applications import *
from keras.models import Model
import time
from keras.applications.xception import Xception
from keras.preprocessing import image
from keras.applications.xception import preprocess_input, decode_predictions
from keras.models import Model
import numpy 

from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import utils
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import build_signature_def, predict_signature_def
from tensorflow.contrib.session_bundle import exporter
from keras import backend as K

nb_classes = 8 
img_width, img_height = 299, 299 
export_path = './export/1/'
TF_WEIGHTS_PATH = './top_model_weights-00-0.95.h5'


if __name__ == '__main__':
	K.set_learning_phase(0)
	new_model = Xception(input_shape=(299, 299, 3), weights=None, include_top=True,classes=3)
        new_model.load_weights(TF_WEIGHTS_PATH)
	builder = saved_model_builder.SavedModelBuilder(export_path)

	signature = predict_signature_def(inputs={'images': new_model.input},
                                  outputs={'scores': new_model.output})

	with K.get_session() as sess:
    		builder.add_meta_graph_and_variables(sess=sess,
                                         tags=[tag_constants.SERVING],
                                         signature_def_map={'predict': signature})
    		builder.save()
	k.clear_session()

for a test set of 5 images if I test with the keras test script, i get high accuracy 0f > 0.9. But when this model is deployed to serving, i get accuracy of 0.4 - 0.5. Look like a issue with dropout from the behaviour. While training i had used dropout of 0.5.

Any idea what might be issue? Because our TF version is 1.0.0 and Serving 1.0.0 i have not tested it with the latest TF run time.

Best Regards,
Vijay

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions