케라스 파이썬 라이브러리를 사용해 손글씨 숫자 분류를 학습하는 구체적인 신경망 예제를 살펴보자.
(코드 이해할 필요 ㄴㄴ)
<문제> 이미지 인식에 대한 새로운 아이디어를 테스트하기에 편리한 데이터셋인 MNIST를 사용해 흑백 손글씨 숫자 이미지(28x28픽셀)를 10개의 범주(0에서 9까지)로 분류하기.
클래스(class): 머신 러닝에서 분류 문제의 범주(category)
샘플(sample): 데이터 포인트
레이블(lable): 특정 샘플의 클래스
학습 데이터(training set)에는 신경망의 학습에 이용될 수 있도록 레이블이 붙어 있는 60,000개의 데이터가 존재한다.(레이블이 붙어있다 = 입력 값과 결과 값이 들어 있다)
테스트 데이터(test data)에는 총 10,000개가 존재한다.
from keras.datasets import mnist
(train_images, train_lables), (test_images, test_lables) = mnist.load_data()
train_images.shape
>>>(60000, 28, 28)
len(train_lables)
>>>60000
train_lables
>>>array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)
test_images.shape
>>>(10000, 28, 28)
len(test_lables)
>>>10000
test_lables
>>>array([7, 2, 1, ..., 4, 5, 6], dtype=uint8)
from keras import models
from keras import layers
network = models.Sequential()
network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(layers.Dense(10, activation='softmax'))
신경망의 핵심 구성 요소는 층(layer)이다.
층은 입력된 데이터로부터 주어진 문제에 더 의미 있는 표현을 추출한다.