2.1 신경망과의 첫 만남

케라스 파이썬 라이브러리를 사용해 손글씨 숫자 분류를 학습하는 구체적인 신경망 예제를 살펴보자.

(코드 이해할 필요 ㄴㄴ)

<문제> 이미지 인식에 대한 새로운 아이디어를 테스트하기에 편리한 데이터셋인 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)이다.

층은 입력된 데이터로부터 주어진 문제에 더 의미 있는 표현을 추출한다.