# 인공지능 생성
model = tf.keras.models.Sequential()
# 플래튼 작업 : 다차원 행렬 1차원화
model.add(tf.keras.layers.Flatten())
# 히든 레이어
model.add(tf.keras.layers.Dense(128, 'relu'))
# 활성함수 소프트맥스로 분류 문제로 출력
model.add(tf.keras.layers.Dense(10, 'softmax'))
# 분류 작업을 하는 손실함수를 이용하여 컴파일
model.compile('adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 10번동안 성능 향상이 없으면 학습 중단
early_stop = tf.keras.callbacks.EarlyStopping(monitor = 'val_loss', patience=10)
# 인공지능 학습
epoch_history = model_ep30.fit(training_images, training_labels, epochs=30, validation_split=0.2, callbacks=[early_stop])
Callback 클래스
텐서플로우의 Callback 클래스를 상속해서 클래스 생성
EarlyStopping과는 다르게 내가 특정 수치를 지정하여 학습을 중단 할 수 있음
지정한 함수 안에 에포크가 끝날때마다 하고싶은 작업을 코딩
class 클래스이름(tf.keras.callbacks.Callback):
def 함수이름(self, 변수) :
클래스의 함수 호출시 시행 할 작업
Callback 클래스 사용 인공지능 모델링 전체 코드
# 콜백 클래스 정의
class myCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}) :
if logs.get('val_accuracy') > 0.87 :
print('\n밸리데이션 정확도가 87% 넘으므로 학습을 종료합니다.')
self.model.stop_training=True
# 콜백 클래스 생성
my_callback = myCallback()
# 인공지능 생성
model_ep30 = tf.keras.models.Sequential()
# 플래튼 작업 : 다차원 행렬 1차원화
model_ep30.add(tf.keras.layers.Flatten())
# 히든 레이어
model_ep30.add(tf.keras.layers.Dense(128, 'relu'))
# 활성함수 소프트맥스로 분류 문제로 출력
model_ep30.add(tf.keras.layers.Dense(10, 'softmax'))
# 분류 작업을 하는 손실함수를 이용하여 컴파일
model_ep30.compile('adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 인공지능 학습
epoch_history = model_ep30.fit(training_images, training_labels, epochs=30, validation_split=0.2, callbacks=[my_callback])