2017-07-11 11 views
2

私は、高度パラメータ検索のためにKerSRegressorと共にGridSearchCVを使用しようとしています。 Keras model.fit関数を単独で使用すると、履歴オブジェクトを使用して 'loss'および 'val_loss'変数を見ることができます。GridSearchCVベストモデルCV履歴

GridSearchCVを使用しているときに 'loss'と 'val_loss'変数を調べることは可能ですか?ここで

は私がgridsearchを行うために使用していたコードです:

model = KerasRegressor(build_fn=create_model_gridsearch, verbose=0) 
layers = [[16], [16,8]] 
activations = ['relu' ] 
optimizers = ['Adam'] 
param_grid = dict(layers=layers, activation=activations, input_dim=[X_train.shape[1]], output_dim=[Y_train.shape[1]], batch_size=specified_batch_size, epochs=num_of_epochs, optimizer=optimizers) 
grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring='neg_mean_squared_error', n_jobs=-1, verbose=1, cv=7) 

grid_result = grid.fit(X_train, Y_train) 

# 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 sorted(zip(means, stds, params), key=lambda x: x[0]): 
    print("%f (%f) with: %r" % (mean, stdev, param)) 

def create_model_gridsearch(input_dim, output_dim, layers, activation, optimizer): 
    model = Sequential() 

    for i, nodes in enumerate(layers): 
     if i == 0: 
      model.add(Dense(nodes, input_dim=input_dim)) 
      model.add(Activation(activation)) 
     else: 
      model.add(Dense(nodes)) 
      model.add(Activation(activation)) 
    model.add(Dense(output_dim, activation='linear')) 

    model.compile(optimizer=optimizer, loss='mean_squared_error') 

    return model 

にはどうすれば最適なモデル、grid_result.best_estimator_.modelのためのエポックごとの研修やCV損失を得ることができますか?

grid_result.best_estimator_.model.history.keysようには変数()

答えて

1

歴史はうまく隠されてはありません。私はそれを見つけることができました

grid_result.best_estimator_.model.model.history.history