군침이 싹 도는 코딩

텐서플로우를 이용한 그리드 서치 방법 본문

Python/Deep Learning

텐서플로우를 이용한 그리드 서치 방법

mugoori 2022. 12. 27. 17:08

그리드 서치의 정의는 이 글을 참고 : https://mugoori.tistory.com/59

 

Grid Search

인공지능을 만들때 여러개를 한번에 만들고 싶다면 GridSearchCV를 사용하면 된다 우선은 파라미터로 사용할것을 딕셔너리로 만들어준다 param_grid= {'kernel':['linear','rbf','poly'],'C':[0.1,1,10], 'gamma':[0.01,0

mugoori.tistory.com

 

 

 

 

 

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=6,activation='relu'))
  model.add( Dense(units=1,activation='sigmoid'))
  model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'] )
  return model

# 그리드 서치를 위해 모델링을 일일히 하지않고 모델링을 해주는 함수를 만든다

이것으로 모델링과 컴파일모두가 한꺼번에 된다

파라미터로는 옵티마이저를 바꿀수 있게 해준다

 

 

 

 

 

model = KerasClassifier(build_fn=build_model)
>>>
<ipython-input-210-fda71031c374>:1: DeprecationWarning: KerasClassifier is deprecated, use Sci-Keras (https://github.com/adriangb/scikeras) instead. See https://www.adriangb.com/scikeras/stable/migration.html for help migrating.
  model = KerasClassifier(build_fn=build_model)

# 그리드 서치를 위해 그리드서치용 클래시파이어를 만든다

안에 빌드 fn에는 위에 만들어뒀던 빌드 모델 함수를 넣어준다

 

 

 

 

 

my_param = {'batch_size':[10,20,32],'epochs':[20,30,50],'optimizer':['adam','rmsprop']}

grid = GridSearchCV(estimator= model, param_grid= my_param, scoring='accuracy')

# 그리드 서치를 위해 원하는 조건을 딕셔너리로 만들어 변수에 저장하고

estimator 에는 인공지능 모델

 param_grid 에는 원하는 조건을 넣어두었던 변수 my_param 

scoring 은 무엇으로 판단하는지인데 분류이므로 정확도(accuracy)

 

 

 

 

 

 

grid.fit(X_train,y_train)

# 이제 트레인 데이터를 넣으면 18개의 조합으로 하나씩 돌아가고 있는것이 보인다