build()레이어가 사용할 가중치나 변수를 초기화하는 메서드
데이터를 입력받기 전에 1회 호출되며, input_shape을 자동으로 계산하여 데이터에 맞는 가중치와 변수를 초기화함
class MyLayer(tf.keras.layers.Layer):
def __init__(self):
super(MyLayer, self).__init__()
def build(self, input_shape): # input_shape = 자동 계산
self.W = self.add_weight(
shape=(input_shape[-1], 10),
initializer='random_normal'
) # 가중치 초기화
call()Layer() 또는 Model()이 실행될 때, 주어진 입력을 처리하여 출력을 반환하는 메서드
주로 연산을 수행하거나, 레이어를 어떻게 쌓을지 내용을 기술하는 곳
class MyLayer(tf.keras.layers.Layer):
def __init__(self):
super(MyLayer, self).__init__()
def call(self, inputs):
return inputs * 2 # 연산 수행 정의
compile()fit() 전에는 compile() 과정이 선행되어야 함model.compile(
optimizer='adam', # 최적화 함수
loss='sparse_categorical_crossentropy', # 손실 함수
metrics=['accuracy'] # 평가 지표
)
주요 최적화 함수
tensorflow.keras.optimizers.SGD: 가장 기본적인 경사 하강법 적용
tensorflow.keras.optimizers.RMSprop: 기울기의 제곱의 이동 평균을 이용하여 학습률을 자동으로 조정
tensorflow.keras.optimizers.Adam: 모멘텀(가속도)을 이용하여 학습률을 자동으로 조정, 가장 많이 활용됨
주요 손실 함수
tensorflow.keras.losses.categorical_crossentropy: 다중 클래스 분류 문제에 사용 (라벨이 원-핫 인코딩된 경우)
tensorflow.keras.losses.sparse_categorical_crossentropy: 다중 클래스 분류 문제에 사용 (라벨이 정수 인코딩된 경우)
tensorflow.keras.losses.binary_crossentropy: 이진 분류 문제에 사용
tensorflow.keras.losses.MeanSquaredError: 회귀 문제에서 사용(MSE)
tensorflow.keras.losses.MeanAbsoluteError: 회귀 문제에서 사용(MAE)
주요 평가 지표
accuracy, AUC, precision, recall, f1_scoremean_squared_error, mean_absolute_errorfit()model.fit(x_train, y_train, epochs=10, batch_size=32)
epoch: 모델이 훈련 데이터셋을 몇 번 반복해서 학습할지 결정
더 많은 에폭을 설정하면, 모델이 더 많은 데이터를 학습하고 가중치를 더 자주 업데이트하게 됨
너무 적은 에폭 수는 모델이 충분히 학습되지 않을 수 있음
너무 많은 에폭 수는 과적합(overfitting)을 초래할 수 있음
batch_size: 훈련 데이터셋을 나누는 하위 집합의 크기
훈련 데이터셋이 너무 크면 한 번에 모든 데이터를 메모리에 올릴 수 없기 때문에 데이터를 여러 개의 배치로 나눠서 처리하는 개념
작은 배치 크기는 모델을 더 자주 업데이트하지만, 각 업데이트 과정이 불안정할 수 있음
큰 배치 크기는 한 번에 더 많은 데이터를 사용하여 업데이트하므로 안정적이지만, 계산 비용이 더 많이 들게 됨
callback: 모델 학습 과정에서 특정 이벤트(에포크 시작 시, 10 에포크 마다, 학습 종료 시 등)에 대해 사용자가 정의한 작업을 실행하게끔 할 수 있음
tf.keras.callbacks.EarlyStopping: 성능 개선이 이루어지지 않는 경우 학습 조기 종료tf.keras.callbacks.ModelCheckpoint: 학습 중 특정 조건을 만족하는 경우 모델 저장tf.keras.callbacks.LearningRateScheduler: 학습 중 특정 조건에 따라 학습률 조정tf.keras.callbacks.TensorBoard: TensorBoard를 이용하여 학습 로그를 시각활 할 수 있도록 세팅verbose: 학습 진행과정을 어떻게 출력할 것인지 설정
validation_split: 학습 데이터 중 어느 정도의 비율을 검증 데이터로 활용할 것인지 설정
validation_data: 검증 데이터로 사용할 별도의 데이터셋을 지정 (validation_split과 동시 사용 불가)
*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.