2017-07-11 76 views
2

我想用GridSearchCV和KerasRegressor一起進行超參數搜索。 Keras model.fit函數本身允許使用歷史記錄對象查看「損失」和「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