AI-video&image/기본

Mnist Classification

nana7 2020. 2. 24. 23:48

0)파라미터 설정

-LearningRate:0.01

-Epochs:15

-Optimizer=sgd

-BatchSize=32

 

1)keras에 내장된 mnist데이터를 통해 train, test 데이터 및 라벨을 로드함

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

 

2)데이터 직접 확인해보기

Train image(25개 뽑아서 확인)

Train label(25개 뽑아서 확인)

 

3)데이터 셋을 3차원 ->2차원으로 변경

train_images = train_images.reshape(60000, 28 * 28)
test_images = test_images.reshape(10000, 28*28)

 

4)normalize

train_images = train_images.astype(float)/255.0
test_images = test_images.astype(float)/255.0

 

5)one hot encoding

train_labels = np_utils.to_categorical( train_labels )
test_labels = np_utils.to_categorical( test_labels )

 

6)모델 만들기

model = Sequential()
model.add( Dense(units=512, input_dim=28*28, activation="relu"))
model.add( Dense(units=10, activation="softmax"))

7) 모델 학습과정 설정하기

model.compile( loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])

learning rate를 하기와 같이 따로 설정할수 있음(하기와 같이 설정 안하면 기본값으로 학습)

sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss=
'mean_squared_error', optimizer=sgd)

 

8)모델학습

hist = model.fit(train_images, train_labels, epochs=epoch_cnt, batch_size=32)

 

 

9)Output

loss: 0.1150 - accuracy: 0.9690