2017-05-25 208 views
0

我follorwing本教程創建一個分類 Tutorial Link保存訓練模型在Keras

`

# MLP for Pima Indians Dataset with grid search via sklearn 
    from keras.models import Sequential 
    from keras.layers import Dense 
    from keras.wrappers.scikit_learn import KerasClassifier 
    from sklearn.model_selection import GridSearchCV 
    import numpy 

    # Function to create model, required for KerasClassifier 
    def create_model(optimizer='rmsprop', init='glorot_uniform'): 
     # create model 
     model = Sequential() 
     model.add(Dense(12, input_dim=8, kernel_initializer=init, activation='relu')) 
     model.add(Dense(8, kernel_initializer=init, activation='relu')) 
     model.add(Dense(1, kernel_initializer=init, activation='sigmoid')) 
     # Compile model 
     model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy']) 
     return model 

    # 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 = KerasClassifier(build_fn=create_model, verbose=0) 
    # grid search epochs, batch size and optimizer 
    optimizers = ['rmsprop', 'adam'] 
    init = ['glorot_uniform', 'normal', 'uniform'] 
    epochs = [50, 100, 150] 
    batches = [5, 10, 20] 
    param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init) 
    grid = GridSearchCV(estimator=model, param_grid=param_grid) 
    grid_result = grid.fit(X, Y) 
    # summarize results 
    print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_)) 
    means = grid_result.cv_results_['mean_test_score'] 
    stds = grid_result.cv_results_['std_test_score'] 
    params = grid_result.cv_results_['params'] 
    for mean, stdev, param in zip(means, stds, params): 
     print("%f (%f) with: %r" % (mean, stdev, param)) 

的代碼工作正常,我希望保存訓練的模型到外部文件,請指導我。

我知道keras model.save保存模型,但在這裏,我們已經做了模型的一些外部的工作,我怎麼保存所有更改的模式?

+0

你嘗試醃了嗎? –

回答

0

在您的來電model.fit(),你必須包括一個回調。回調將使用ModelCheckpoint將模型保存在文件中。訓練結束後,您可以使用Keras load_model加載模型。

epochs = 10 
    batch_size = 64 
    filepath = "checkpoint/model.{epoch:02d}.hdf5" 
    checkpoint = ModelCheckpoint(filepath=filepath, verbose=1,\ 
     save_best_only=False) 
    callbacks = [checkpoint] 
    model.fit(X, Y, epochs=epochs,\ 
     batch_size=batch_size,\ 
     shuffle=True, callbacks=callbacks)