DeepLearining

텐서플로우 딥러닝 GridSearchCV 이용 방법

macro 2021. 3. 12. 12:58
반응형

텐서플로우(Tensorflow)로 ANN (DNN) 을 만들고, 최적의 모델을 찾기 위해서 GridSearchCV 를 이용한다.

 

먼저 모델을 만드는 함수를 작성한다.

 

함수의 파라미터로, 옵티마이저(optimizer)를 받는다.

def build_classifier(optimizer):
    classifier = Sequential()
    classifier.add(Dense(units = 6, activation = 'relu', input_dim = 11))
    classifier.add(Dense(units = 6, activation = 'relu'))
    classifier.add(Dense(units = 1, activation = 'sigmoid'))
    classifier.compile(optimizer = optimizer, loss = 'binary_crossentropy', metrics = ['accuracy'])
    return classifier

 

위의 모델 만드는 함수로 KerasClassifier 를 만든다.

classifier = KerasClassifier(build_fn = build_classifier)

 

 

조합할 파라미터를 딕셔너리로 셋팅한다. 에포크 수, 배치 사이즈, 옵티마이저 등이 해당된다. 

parameters = {'batch_size': [25, 32],
              'epochs': [80, 100],
              'optimizer': ['adam', 'rmsprop']}

 

그리드 서치 함수를 만든다.  

위의 변수들을 넣어주고, 크로스 밸리데이션 (Cross Validation) 갯수도 넣어준다. 

grid_search = GridSearchCV(estimator = classifier,
                           param_grid = parameters,
                           scoring = 'accuracy',
                           cv = 10)

 

 

마지막으로, 학습하도록 실행한다.

grid_search = grid_search.fit(X_train, y_train)

 

 

 

실행하면 아래 화면이 한~~참 동안 나온다.  베스트 모델이 나왔을때 checkpoint 를 이용해서, 자동으로 저장하도록 하면 된다. 

 

 

 

학습이 끝나면, 베스트 파라미터와 베스트 스코어를 확인해 볼 수 있다.

best_parameters = grid_search.best_params_
best_accuracy = grid_search.best_score_

 

 

 

반응형