【发布时间】:2020-04-21 03:27:05
【问题描述】:
在我的代码中,我试图评估哪种参数组合最适合我的 ANN 精度。但似乎我的 GridSearchCV 只检查每个参数的第一个值,并返回参数的最佳组合,这些参数的值的第一个输入。 这是我的代码:
import keras
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
from keras.models import Sequential
from keras.layers import Dense
def build_classifier(optimizer):
classifier = Sequential()
classifier.add(Dense(6, kernel_initializer='uniform', activation='relu', input_dim= 11))
classifier.add(Dense(6, kernel_initializer='uniform', activation='relu'))
classifier.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
classifier.compile(optimizer = optimizer, loss = 'binary_crossentropy', metrics = ['accuracy'])
return classifier
classifier = KerasClassifier(build_fn= build_classifier)
parameters = {'batch_size':[25,32], 'nb_epoch':[500,100], 'optimizer': ['rmsprop', 'adam']}
grid_search =GridSearchCV(estimator = classifier, param_grid= parameters, scoring= 'accuracy', cv=10)
grid_search= grid_search.fit(x_train, y_train)
best_parameters= grid_search.best_params_
best_accuracy=grid_search.best_score_
此时它返回的最佳参数是:batch size= 25, epoch = 500 and optimizer = 'rmsprop'
现在如果我将参数更改为:
parameters = {'batch_size':[25,32], 'nb_epoch':[100,500], 'optimizer': ['adam', 'rmsprop']}
它返回最佳参数为 batch_size = 25, epoch=100 和 Optimizer =adam
在控制台中我看到了这个:
Epoch 1/1
7200/7200 [==============================] - 0s 49us/step - loss: 0.6335 - accuracy: 0.7928
Epoch 1/1
7200/7200 [==============================] - 0s 52us/step - loss: 0.6166 - accuracy: 0.7937
Epoch 1/1
7200/7200 [==============================] - 0s 59us/step - loss: 0.5946 - accuracy: 0.7956
Epoch 1/1
7200/7200 [==============================] - 0s 58us/step - loss: 0.6066 - accuracy: 0.7942
Epoch 1/1
7200/7200 [==============================] - 0s 61us/step - loss: 0.5923 - accuracy: 0.7932
Epoch 1/1
7200/7200 [==============================] - 0s 61us/step - loss: 0.5829 - accuracy: 0.7971
Epoch 1/1
7200/7200 [==============================] - 0s 54us/step - loss: 0.6069 - accuracy: 0.7924
Epoch 1/1
7200/7200 [==============================] - 0s 57us/step - loss: 0.6115 - accuracy: 0.7921
Epoch 1/1
7200/7200 [==============================] - 0s 58us/step - loss: 0.5892 - accuracy: 0.7944
Epoch 1/1
7200/7200 [==============================] - 0s 59us/step - loss: 0.5905 - accuracy: 0.7951
Epoch 1/1
7200/7200 [==============================] - 0s 59us/step - loss: 0.5726 - accuracy: 0.7957
Epoch 1/1
7200/7200 [==============================] - 0s 59us/step - loss: 0.5940 - accuracy: 0.7944
Epoch 1/1
8000/8000 [==============================] - 0s 55us/step - loss: 0.5755 - accuracy: 0.7946
为什么总是 epoch 1/1??
【问题讨论】:
标签: python-3.x keras scikit-learn deep-learning grid-search