TensorflowException: Invalid GraphDef (TensorFlow 2.0)

Viewed 1020

I'm building a model using tf.keras.models.Sequential and saving it as a SavedModel object which contains a saved_model.pb file. The model is then going to be used in a C# service using ML.net.

Here is the code (pulled and adapted from docs)

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
train_labels = train_labels[:1000]
test_labels = test_labels[:1000]
train_images = train_images[:1000].reshape(-1, 28 * 28) / 255.0
test_images = test_images[:1000].reshape(-1, 28 * 28) / 255.0

# Define a simple sequential model
def create_model():
    model = tf.keras.models.Sequential([
    keras.layers.Dense(512, activation='relu', input_shape=(784,)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10)
    ])

    model.compile(optimizer='adam',
                loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
                metrics=['accuracy'])

    return model

# Create a basic model instance
model = create_model()
model.fit(train_images, train_labels, epochs=5)

# Save model
#model.save('/Users/fco/Desktop/saved_model/test.h5', save_format='tf') 
tf.saved_model.save(model, '/Users/fco/Desktop/saved_model')

# Load model
new_model = tf.keras.models.load_model('/Users/fco/Desktop/saved_model')
print(new_model.predict(test_images).shape)

When loading the saved_model.pb file in ML.NET I get the following exception.

TensorflowException: Invalid GraphDef

When I search for this error - it references freezing weights on model, but the solutions are for TF1. TF2 seems to have a more streamlined method of saving model, but I cannot understand what is wrong.

Does anyone know what I'm missing?

1 Answers

I don't know answer for you problem but you can save your model in .h5 format and load it easily.

Example:

save your model using

model.save('/content/saved_model.h5')

and load it using

loaded_model= models.load_model('/content/saved_model.h5')

Related