본문 바로가기
Data Science/Deep Learning

Keras 모델 훈련 API 정리 (compile,fit)

by Queen2 2022. 11. 6.
728x90
반응형

딥러닝 코드의 기본 구조가 compile > fit (훈련)  >  evaluate,predict (평가, 예측) 이런식의 흐름으로 진행된다는 것은 알고있지만, 각각의 훈련을 위한 API 구성요소가 무엇이 있고 어떤 특징이 있는지 공식 문서를 기반으로 정리해보겠습니다 :)

 

Model.compile 

구성 요소 내용 설명
optimizer RMSpop,SGD, Adam,Nadam,Adagrad, Adamax 등등 사용하려는 옵티마이저 이름을 문자열 형태 혹은 tf.keras.optimizers 인스턴스 형태로 기입
loss binary_crossentropy, binary_focal_crossentropy, categorical_crossentropy, huber_loss, mean_absolute_error, mean_squared_error 등등 문자열 혹은 tf.keras.losses.Loss 인스턴스 형태로 손실함수 정의
metrics accuracy, root_mean_squared_error 등등 평가지표를 문자열 혹은 tf.keras.metrics.Metric 인스턴스로 제시

{outputA:'accuracy',outputB:'mse'} 혹은 ['accuracy','mse'] 처럼 리스트나 딕셔너리 형태로 제시 가능함
loss_weights 리스트 형태 사용시 결과값과 1:1 매칭 필요, dict 형태 사용시 결과값의 명칭을 스칼라 계수와  매칭시켜줘야 함 모델의 출력에 가중치부여를 위해 스칼라 형태 계수를 선택적으로 지정해주는 dict 혹은 리스트 형태
weighted_metrics metrics list 훈련/테스트 동안 평가될 매트릭스 리스트 (sample_weight 혹은 clas_weight 활용)
run_eagerly True / False
(가급적 모델에 tf.function.run_eagerly = True가 아닌 이상 사용하지 않길 권장)
False (default) 
True: 모델 구조가 tf.function에 포함되지 않을 것임
steps_per_execution 정수 타입입력 default 1
tf.function 실행마다 사용될 batch의 수를 의미함
jit_compile True가 모든 모델에 적합하지는 않음. True: 모델의 훈련 스텝을 XLA (머신러닝 최적화 컴파일러)를 사용해서 컴파일함

 

Model.fit(x,y,batch_size,epoch,verbase,callbacks, validation_split, validation data....)

구성요소 내용 설명
batch_size 정수 gradient 업데이트 때마다 사용하는 샘플의 수 (default 값은 32) 
epoch 정수 모델 훈련을 위한 전체 데이터 순회 횟수
verbose 'auto', 1, 2
대부분 auto 에서는 1이 사용됨
0 = silent
1 = 바 형태의 진행
2 = 에포크당 한줄 형태
callbacks BackupAndRestore, BaseLogger, EarlyStopping, ModelCheckpoint, Tensorboard, Remotemonitor 등등 keras.callbacks.Callback의 인스턴스들 리스트

callback 맞춤화를 위해서는 tf.keras.callbacks.Callback하위클래스를 오버라이드 하는 형태로 조정 가능
validation_split 0에서 1 사이의 실수 별도의 검증 데이터 분리르 안했을 시에, 훈련데이터의 얼마 정도를 검증데이터로 사용
validation_data 검증데이터 노이즈나 드롭아웃에 영향을 받지 않음. 
shuffle True / False -> 전체데이터 셔플시
'batch' => 배치 내에서 섞을 건지
각 에포크 전에 훈련데이터의 셔플 여부를 결정 
calss_weight dict 형태로 어떤 클래스에 어떤 가중치를 사용할 것을 제시 훈련 중에 손실함수 가중치에 반영되는 값으로 모델에 특정 샘플에 집중하라는 명시적 제시로 사용 가능
sample_weight 훈련 샘플을 위한 넘파이 배열 형태의 가중치 훈련 중 손실함수 가중치 계산시 사용 
initial_epoch 정수 훈련 시작시 사용될 epoch 횟수 지정
steps_per_epoch 정수 혹은 None 다음 에포크로 넘어가기 전 사용되는 배치 샘플의 수 명시
validation_steps 에포크가 끝나기 전 검증을 수행할 때 사용하는 배치 샘플의 수 validation_data가 제시되었을 때만 사용가능함. None 제시시에는 검증데이터 소진때까지 검증 수행
validation_batch_size 정수 혹은 None 검증 batch 마다 사용하는 샘플의 수
validation_freq 정수 혹은 collection.abc.Container의 인스턴스 새로운 검증 수행 전에 실행되어야 하는 훈련 에포크의 수 (몇 에포크마다 validation을 수행할 것인지)
max_queue_size 정수 (default 10) 제너레이터 혹은 keras.utils.Sequence 인풋에서만 사용됨. 단어 그대로 generator queue의 최대 사이즈를 의미함
workers 정수 (default 1) 제너레이터 혹은 keras.utils.Sequence 인풋에서만 사용됨. process-based threading 실행 시 진행가능한 최대 개수의 process 
use_multiprocessing True / False (default False) 제너레이터 혹은 keras.utils.Sequence 인풋에서만 사용됨.

 

자료를 정리하면서 이해가 되는 부분도, 헷갈리는 부분도 있었는데요 🧐

공부하면서 추가 / 수정해나가겠습니다 !

 

 

Source:

https://keras.io/api/models/model_training_apis/

728x90
반응형

댓글