I have 2 models that I am experimenting with, the inputs and outputs are the same for both of them. One is a CNN and the other has only Dense layers. I have saved both models in the same way and Im trying to get predictions from them using TF Serving Rest API.
CNN Model:
inputs = tf.keras.layers.Input(shape=(50,3)) x = tf.keras.layers.Conv1D(filters=12, kernel_size=2, strides=1, padding='valid', activation='relu')(inputs) x = tf.keras.layers.MaxPooling1D()(x) x = tf.keras.layers.Conv1D(filters=12, kernel_size=2, strides=1, padding='valid', activation='relu')(x) x = tf.keras.layers.MaxPooling1D()(x) x = tf.keras.layers.Conv1D(filters=12, kernel_size=2, strides=1, padding='valid', activation='relu')(x) x = tf.keras.layers.Flatten()(x) predictions = tf.keras.layers.Dense(3, activation='softmax')(x) Dense Model:
inputs = tf.keras.layers.Input(shape=(50,3)) x = tf.keras.layers.Dense(64, activation='relu')(inputs) x = tf.keras.layers.Dense(64, activation='relu')(x) x = tf.keras.layers.Dense(64, activation='relu')(x) x = tf.keras.layers.Dense(32, activation='relu')(x) x = tf.keras.layers.Flatten()(x) predictions = tf.keras.layers.Dense(3, activation='softmax')(x) When trying to send a prediction request to the CNN model with TF Serving, I get the correct response, but the same request being sent to the Dense model returns a 400 Bad Request error.
reading = np.random.uniform(0, 1, (50, 3)) r = requests.post('http://localhost:8501/v1/models/my_model:predict', data=json.dumps({'instances': reading.tolist()})) CNN Model returns correctly:
{"predictions": [[1.78464702e-20, 4.44278494e-33, 4.32330665e-07]]} Dense Model returns:
{"error": "indices[0] = 2 is not in [0, 2)\\n\\t [[{{node model/dense/Tensordot/GatherV2_1}}]]"} Any ideas whats happening here?