How to load a model from an HDF5 file in Keras? How to load a model from an HDF5 file in Keras? python python

How to load a model from an HDF5 file in Keras?


If you stored the complete model, not only the weights, in the HDF5 file, then it is as simple as

from keras.models import load_modelmodel = load_model('model.h5')


load_weights only sets the weights of your network. You still need to define its architecture before calling load_weights:

def create_model():   model = Sequential()   model.add(Dense(64, input_dim=14, init='uniform'))   model.add(LeakyReLU(alpha=0.3))   model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))   model.add(Dropout(0.5))    model.add(Dense(64, init='uniform'))   model.add(LeakyReLU(alpha=0.3))   model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))   model.add(Dropout(0.5))   model.add(Dense(2, init='uniform'))   model.add(Activation('softmax'))   return modeldef train():   model = create_model()   sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)   model.compile(loss='binary_crossentropy', optimizer=sgd)   checkpointer = ModelCheckpoint(filepath="/tmp/weights.hdf5", verbose=1, save_best_only=True)   model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose=2, callbacks=[checkpointer])def load_trained_model(weights_path):   model = create_model()   model.load_weights(weights_path)


See the following sample code on how to Build a basic Keras Neural Net Model, save Model (JSON) & Weights (HDF5) and load them:

# create modelmodel = Sequential()model.add(Dense(X.shape[1], input_dim=X.shape[1], activation='relu')) #Input Layermodel.add(Dense(X.shape[1], activation='relu')) #Hidden Layermodel.add(Dense(output_dim, activation='softmax')) #Output Layer# Compile & Fit modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])model.fit(X,Y,nb_epoch=5,batch_size=100,verbose=1)    # serialize model to JSONmodel_json = model.to_json()with open("Data/model.json", "w") as json_file:    json_file.write(simplejson.dumps(simplejson.loads(model_json), indent=4))# serialize weights to HDF5model.save_weights("Data/model.h5")print("Saved model to disk")# load json and create modeljson_file = open('Data/model.json', 'r')loaded_model_json = json_file.read()json_file.close()loaded_model = model_from_json(loaded_model_json)# load weights into new modelloaded_model.load_weights("Data/model.h5")print("Loaded model from disk")# evaluate loaded model on test data # Define X_test & Y_test data firstloaded_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])score = loaded_model.evaluate(X_test, Y_test, verbose=0)print ("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100))