diff --git a/4-advanced-multi-layer-perceptrons-and-keras/ch13-save-your-models-for-later-with-serialization.md b/4-advanced-multi-layer-perceptrons-and-keras/ch13-save-your-models-for-later-with-serialization.md index 6643e5f..df90bab 100644 --- a/4-advanced-multi-layer-perceptrons-and-keras/ch13-save-your-models-for-later-with-serialization.md +++ b/4-advanced-multi-layer-perceptrons-and-keras/ch13-save-your-models-for-later-with-serialization.md @@ -52,7 +52,8 @@ model = Sequential() model.add(Dense(12, input_dim=8, init='uniform', activation='relu')) model.add(Dense(8, init='uniform', activation='relu')) model.add(Dense(1, init='uniform', activation='sigmoid')) # Compile model -model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model +model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) +# Fit the model model.fit(X, Y, nb_epoch=150, batch_size=10, verbose=0) # evaluate the model scores = model.evaluate(X, Y, verbose=0) @@ -71,39 +72,17 @@ print("Saved model to disk") ```python # later... # load json and create model -# MLP for Pima Indians Dataset serialize to JSON and HDF5 -from keras.models import Sequential -from keras.layers import Dense -from keras.models import model_from_json -import numpy -import os -# fix random seed for reproducibility -seed = 7 -numpy.random.seed(seed) -# load pima indians dataset -dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") -# split into input (X) and output (Y) variables -X = dataset[:,0:8] -Y = dataset[:,8] -# create model -model = Sequential() -model.add(Dense(12, input_dim=8, init='uniform', activation='relu')) model.add(Dense(8, init='uniform', activation='relu')) -model.add(Dense(1, init='uniform', activation='sigmoid')) -# Compile model -model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model -model.fit(X, Y, nb_epoch=150, batch_size=10, verbose=0) -# evaluate the model -scores = model.evaluate(X, Y, verbose=0) -print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) -# serialize model to JSON -model_json = model.to_json() -with open("model.json", "w") as json_file: - json_file.write(model_json) -# serialize weights to HDF5 -model.save_weights("model.h5") -print("Saved model to disk") -# later... -# load json and create model +json_file = open("model.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.h5") +print("Loaded model from disk") +# evaluate loaded model on test data +loaded_model.compile(loss="binary_crossentropy", optimizer="rmsprop", metrics=["accuracy"]) +score = loaded_model.evaluate(X, Y, verbose=0) +print("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100)) ``` 结果如下。导入的模型和之前导出时一致: @@ -219,10 +198,13 @@ print("Saved model to disk") # later... # load YAML and create model yaml_file = open('model.yaml', 'r') loaded_model_yaml = yaml_file.read() yaml_file.close() -loaded_model = model_from_yaml(loaded_model_yaml) # load weights into new model loaded_model.load_weights("model.h5") print("Loaded model from disk") +loaded_model = model_from_yaml(loaded_model_yaml) +# load weights into new model +loaded_model.load_weights("model.h5") +print("Loaded model from disk") # evaluate loaded model on test data loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) score = loaded_model.evaluate(X, Y, verbose=0) -print "%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100) +print("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100)) ``` 结果和之前的一样: