open:keras

Keras

가장 좋은 방법은 케라스 공식 문서(https://keras.io/)를 참고하는 것입니다.

compile(): 모델을 기계가 이해할 수 있도록 컴파일 합니다. 오차 함수최적화 방법, 메트릭 함수를 선택할 수 있습니다.

# 이 코드는 뒤의 텍스트 분류 챕터의 스팸 메일 분류하기 실습 코드를 갖고온 것임.
from tensorflow.keras.layers import SimpleRNN, Embedding, Dense
from tensorflow.keras.models import Sequential
max_features = 10000

model = Sequential()
model.add(Embedding(max_features, 32))
model.add(SimpleRNN(32)) #RNN에 대한 설명은 뒤의 챕터에서 합니다.
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])

위 코드는 임베딩층, 은닉층, 출력층을 추가하여 모델을 설계한 후에, 마지막으로 컴파일 하는 과정을 보여줍니다.

optimizer : 훈련 과정을 설정하는 옵티마이저를 설정합니다. adam이나 sgd와 같이 문자열로 지정할 수도 있습니다.
loss : 훈련 과정에서 사용할 손실 함수(loss function)를 설정합니다.
metric : 훈련을 모니터링하기 위한 지표를 선택합니다.

문제 유형 손실 함수명 출력층의 활성화 함수명 참고 설명
회귀 문제 mean_squared_error (평균 제곱 오차) - -
다중 클래스 분류 categorical_crossentropy (범주형 교차 엔트로피) 소프트맥스 10챕터 로이터 뉴스 분류하기 실습 참고
다중 클래스 분류 sparse_categorical_crossentropy 소프트맥스 범주형 교차 엔트로피와 동일하지만 이 경우 원-핫 인코딩이 된 상태일 필요없이 정수 인코딩 된 상태에서 수행 가능
이진 분류 binary_crossentropy (이항 교차 엔트로피) 시그모이드 10챕터 스팸 메일 분류하기, IMDB 리뷰 감성 분류하기 실습 참고

fit() : 모델을 학습합니다. 모델이 오차로부터 매개 변수를 업데이트 시키는 과정을 학습, 훈련, 또는 적합(fitting)이라고 하기도 하는데, 모델이 데이터에 적합해가는 과정이기 때문입니다. 그런 의미에서 fit()은 모델의 훈련을 시작한다는 의미를 가지고 있습니다.

# 위의 compile() 코드의 연장선상인 코드
model.fit(X_train, y_train, epochs=10, batch_size=32)

첫번째 인자 = 훈련 데이터에 해당됩니다.
두번째 인자 = 지도 학습에서 레이블 데이터에 해당됩니다.
epochs = 에포크, 에포크 1은 전체 데이터를 한 차례 훑고 지나갔음을 의미함. 정수값 기재 필요. 총 훈련 횟수를 정의합니다.
batch_size = 배치 크기. 기본값은 32. 미니 배치 경사 하강법을 사요하고 싶지 않을 경우에는 batch_size=None을 기재합니다.

model.fit(X_train, y_train, epochs=10, batch_size=32, verbose=0, validation_data(X_val, y_val))

validation_data(x_val, y_val) = 검증 데이터(validation data)를 사용합니다. 검증 데이터를 사용하면 각 에포크마다 검증 데이터의 정확도도 함께 출력되는데, 이 정화도는 훈련이 잘 되고 있는지를 보여줄 뿐이며 실제로 모델이 검증 데이터를 학습하지는 않습니다. 검증 데이터의 loss가 낮아지다가 높아지기 시작하면 이는 과적합(overfitting)의 신호입니다.

validation_split = validationdata 대신 사용할 수 있습니다. 검증 데이터를 사용하는 것은 동일하지만, 별도로 존재하는 검증 데이터를 주는 것이 아니라 Xtrain과 y_train에서 일정 비율을 분리하여 이를 검증 데이터로 사용합니다. 역시나 훈련 자체에는 반영되지 않고 훈련 과정을 지켜보기 위한 용도로 사용됩니다.

  • open/keras.txt
  • 마지막으로 수정됨: 2020/07/19 11:52
  • 저자 127.0.0.1