How to save final model using keras?

前端 未结 6 636
一整个雨季
一整个雨季 2020-11-28 07:01

I use KerasClassifier to train the classifier.

The code is below:

import numpy
from pandas import read_csv
from keras.models import Sequential
from k         


        
相关标签:
6条回答
  • 2020-11-28 07:41

    The model has a save method, which saves all the details necessary to reconstitute the model. An example from the keras documentation:

    from keras.models import load_model
    
    model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'
    del model  # deletes the existing model
    
    # returns a compiled model
    # identical to the previous one
    model = load_model('my_model.h5')
    
    0 讨论(0)
  • 2020-11-28 07:46

    Generally, we save the model and weights in the same file by calling the save() function.

    For saving,

    model.compile(optimizer='adam',
                  loss = 'categorical_crossentropy',
                  metrics = ["accuracy"])
    
    model.fit(X_train, Y_train,
             batch_size = 32,
             epochs= 10,
             verbose = 2, 
             validation_data=(X_test, Y_test))
    
    #here I have use filename as "my_model", you can choose whatever you want to.
    
    model.save("my_model.h5") #using h5 extension
    print("model saved!!!")
    

    For Loading the model,

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

    In this case, we can simply save and load the model without re-compiling our model again. Note - This is the preferred way for saving and loading your Keras model.

    0 讨论(0)
  • 2020-11-28 07:51

    you can save the model in json and weights in a hdf5 file format.

    # keras library import  for Saving and loading model and weights
    
    from keras.models import model_from_json
    from keras.models import load_model
    
    # serialize model to JSON
    #  the keras model which is trained is defined as 'model' in this example
    model_json = model.to_json()
    
    
    with open("model_num.json", "w") as json_file:
        json_file.write(model_json)
    
    # serialize weights to HDF5
    model.save_weights("model_num.h5")
    

    files "model_num.h5" and "model_num.json" are created which contain our model and weights

    To use the same trained model for further testing you can simply load the hdf5 file and use it for the prediction of different data. here's how to load the model from saved files.

    # load json and create model
    json_file = open('model_num.json', 'r')
    
    loaded_model_json = json_file.read()
    json_file.close()
    loaded_model = model_from_json(loaded_model_json)
    
    # load weights into new model
    loaded_model.load_weights("model_num.h5")
    print("Loaded model from disk")
    
    loaded_model.save('model_num.hdf5')
    loaded_model=load_model('model_num.hdf5')
    

    To predict for different data you can use this

    loaded_model.predict_classes("your_test_data here")
    
    0 讨论(0)
  • 2020-11-28 07:52

    You can save the best model using keras.callbacks.ModelCheckpoint()

    Example:

    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    model_checkpoint_callback = keras.callbacks.ModelCheckpoint("best_Model.h5",save_best_only=True)
    history = model.fit(x_train,y_train,
              epochs=10,
              validation_data=(x_valid,y_valid),
              callbacks=[model_checkpoint_callback])
    

    This will save the best model in your working directory.

    0 讨论(0)
  • 2020-11-28 08:00

    you can save the model and load in this way.

    from keras.models import Sequential, load_model
    from keras_contrib.losses import import crf_loss
    from keras_contrib.metrics import crf_viterbi_accuracy
    
    # To save model
    model.save('my_model_01.hdf5')
    
    # To load the model
    custom_objects={'CRF': CRF,'crf_loss':crf_loss,'crf_viterbi_accuracy':crf_viterbi_accuracy}
    
    # To load a persisted model that uses the CRF layer 
    model1 = load_model("/home/abc/my_model_01.hdf5", custom_objects = custom_objects)
    
    0 讨论(0)
  • 2020-11-28 08:01

    You can use model.save(filepath) to save a Keras model into a single HDF5 file which will contain:

    • the architecture of the model, allowing to re-create the model.
    • the weights of the model.
    • the training configuration (loss, optimizer)
    • the state of the optimizer, allowing to resume training exactly where you left off.

    In your Python code probable the last line should be:

    model.save("m.hdf5")
    

    This allows you to save the entirety of the state of a model in a single file. Saved models can be reinstantiated via keras.models.load_model().

    The model returned by load_model() is a compiled model ready to be used (unless the saved model was never compiled in the first place).

    model.save() arguments:

    • filepath: String, path to the file to save the weights to.
    • overwrite: Whether to silently overwrite any existing file at the target location, or provide the user with a manual prompt.
    • include_optimizer: If True, save optimizer's state together.
    0 讨论(0)
提交回复
热议问题