Home > OS >  predicting images using tensorflow serving - "error": "Input to reshape is a tensor w
predicting images using tensorflow serving - "error": "Input to reshape is a tensor w

Time:09-30

# server URL
url = 'http://localhost:8501/v1/models/img_classifier:predict'


def make_prediction(instances):
    data = json.dumps({"signature_name": "serving_default", "instances": instances.tolist()})
    headers = {"content-type": "application/json"}
    json_response = requests.post(url, data=data, headers=headers)
    print(json_response.text)
    predictions = json.loads(json_response.text)['predictions']
    return predictions

reshaped_array = tf.expand_dims(temp_image, 0)

prediction = make_prediction(reshaped_array)

I get an error when printing the (json_response.text),

"error": "Input to reshape is a tensor with 10000 values, but the requested shape requires a multiple of 784\n\t [[{{node sequential_2/flatten_2/Reshape}}]]"

I am trying to classify a bounding box in an image. The issue starts at this part instances.tolist() If I remove the .tolist(), I will get

TypeError: Object of type EagerTensor is not JSON serializable

and if I keep it, then it ruins the image dimensions. How can I fix this issue?

CodePudding user response:

Found the issue!

I had to retrain the model, and save it using the following code:

MODEL_DIR = 'imageClassifier2021'
version = 1
export_path = os.path.join(MODEL_DIR, str(version))
tf.keras.models.save_model(
    model,
    export_path,
    overwrite=True,
    include_optimizer=True,
    save_format=None,
    signatures=None,
    options=Non

e )

  • Related