딥러닝

딥러닝(4) GridSearch 를 이용한, 최적의 하이퍼 파라미터 찾기

개발연습자1 2022. 12. 27. 17:13

 GridSearch는 저번시간에 배웠던 batch_size와 epoch를 설정하는 부분에서 두개의 파라미터의 최적점을 찾는것을 의미한다. 왜냐하면 batch_size와 epoch는 사람이 설정해야 하는 부분이기 때문이다. 따라서 GridSearch를 이용하여 최적화 점을 찾아 설정하는데 도움이 될수 있도록 할수 있는것이다.

 

#GridSearchCV 함수 호출
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_model(optimizer):
  #모델링
  model =Sequential()
  model.add ( Dense(units=6, activation= 'relu',input_shape=(11,) ) )
  model.add ( Dense(units=8, activation= 'relu'))
  model.add ( Dense(units=1, activation= 'sigmoid'))
  model.compile(optimizer= optimizer,loss='binary_crossentropy',metrics=['accuracy'])
  return model
  
  #2. 그리드 서처를 위해서, 그리드서치용 클래서파이어를 만든다.
  
  model=KerasClassifier(build_fn=build_model)
  
  # 그리드 서치에 들어갈 파라미터를 설정한다.
  my_param={'batch_size':[10,20,32],'epochs':[20,30,50],'optimizer':['adam','rmsprop']}
  
  grid=GridSearchCV(estimator=model,param_grid=my_param,scoring='accuracy')
  
  #모델학습
  grid.fit(X_train,y_train)

 

실제로 이 코드를 진행하면 일일이 딥러닝을 진행중이라 시간이 오래걸린다.

 

학습이 다 끝났다면 베스트 파라미터를 알려주는 함수를 실행시킨다.

grid.best_params_

>> {'batch_size': 10, 'epochs': 30, 'optimizer': 'adam'}

위에 결과처럼 최적의 파라미터를 학습을 통해 알려준다.

반응형