Keras를 활용한 모델 학습 및 평가
이번 수업에는 케라스를 활용하여 간단한 신경망 모델을 학습하고 평가하는 방법을 살펴보겠습니다.
데이터 준비
Keras는 자체적으로 다양한 데이터셋을 제공하며, 이를 활용하여 딥러닝 모델 학습을 연습할 수 있습니다.
아래 예제는 손글씨 숫자 데이터셋(MNIST)
을 사용하여 신경망 모델을 학습하는 과정을 보여줍니다.
from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical # MNIST 데이터 불러오기 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 데이터 전처리: 정규화 및 원-핫 인코딩 x_train = x_train / 255.0 x_test = x_test / 255.0 # 이미지를 28x28 (2D 배열)에서 784개의 1차원 벡터로 변환 (신경망 입력 형식에 맞춤) x_train = x_train.reshape(-1, 28 * 28) x_test = x_test.reshape(-1, 28 * 28) # 숫자 레이블(정답)을 원-핫 인코딩으로 변환 (예: 숫자 3 → [0,0,0,1,0,0,0,0,0,0]) y_train = to_categorical(y_train, num_classes=10) y_test = to_categorical(y_test, num_classes=10)
코드 설명
-
mnist.load_data()
를 사용하여 손글씨 숫자 데이터셋을 불러옵니다. -
x_train
과x_test
는 각각 훈련 데이터와 테스트 데이터의 이미지 배열입니다. -
y_train
과y_test
는 각각 훈련 데이터와 테스트 데이터의 레이블(정답)입니다. -
x_train
과x_test
의 픽셀 값을 0~1 범위로 정규화합니다. 이는 신경망 학습을 더 효과적으로 만들기 위함입니다. -
x_train
과x_test
의 이미지를 28x28 크기의 2D 배열에서 784개의 1차원 벡터로 변환합니다. 이는 신경망의 입력 형식에 맞추기 위함입니다. -
to_categorical()
함수를 사용하여 레이블을 원-핫 인코딩으로 변환합니다. 예를 들어, 숫자 3은[0,0,0,1,0,0,0,0,0,0]
로 변환됩니다. -
num_classes=10
은 0부터 9까지의 숫자 클래스 수를 지정합니다.
모델 학습
이제 이전 강의에서 정의한 신경망 모델을 학습시키겠습니다.
# 모델 학습 model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
주요 매개변수
-
epochs=10
: 에폭 수를 10으로 설정합니다. 즉, 전체 훈련 데이터를 10번 반복하여 학습합니다. -
batch_size=32
: 한 번에 32개의 샘플을 사용하여 가중치를 업데이트합니다. -
validation_split=0.2
: 학습 데이터의 20%를 검증 데이터로 사용합니다.
모델 평가 및 예측
학습이 완료된 모델을 테스트 데이터로 평가하고, 새로운 입력 데이터에 대한 예측을 수행할 수 있습니다.
# 모델 평가 test_loss, test_acc = model.evaluate(x_test, y_test) # 예측 수행 predictions = model.predict(x_test)
코드 설명
-
model.evaluate(x_test, y_test)
를 사용하여 테스트 데이터에 대한 성능을 평가합니다. -
model.predict(x_test[:5])
를 호출하여 테스트 데이터 일부의 예측값을 출력합니다.
지금까지 케라스를 활용하여 신경망 모델을 생성하고 학습한 후 평가하는 기본적인 과정을 배웠습니다.
다음 수업에서는 지금까지 Keras에 대해 배운 내용을 바탕으로 간단한 퀴즈를 풀어보겠습니다.
Keras에서 신경망 모델을 학습할 때, validation_split=0.2
는 학습 데이터의 20%를 검증 데이터로 사용한다.
Lecture
AI Tutor
Design
Upload
Notes
Favorites
Help