tensorflow
: 구글에서 딥러닝 연구 및 제품 개발용으로 만든 라이브러리
- 설치 : pip install tensorflow
MNIST (Modified National Institute of Standards and Technology)
: 손으로 쓴 숫자들로 이루어진 대형 DB
- NIST의 오지널 데이터셋의 샘플을 재혼합하여 만들어짐
- 28X28픽셀의 흑백 이미지
- 60000개의 학습용 이미지 + 10000개의 평가용 이미지
MNIST 손글씨 이미지 학습하기
- 28X28 픽셀 값이 입력으로 들어오기 때문에 입력층으로 784개의 데이터가 들어온다.
- 출력층에서는 0-9까지의 숫자 중 어떤 숫자인지 맞춰야하기 때문에 0-9까지의 숫자일 확률이 각각 출력된다.
- 손실함수 'sparse_categorical_crossentropy' : 입력값이 다양한 종류 중 어떤 종류인지 분류하는 문제에서 주로 사용
- 최적화 함수 'adam', 'rmsprop' (여기서는 'adam' 사용)
- 학습용 데이터를 몇번 반복할 것인지 정해야 한다. (여기서는 5번 반복하여 학습)
평가 과정
- 예측한 값과 정답이 얼마나 높은 비율로 일치하는지 평가하는 정확도로 평가
[ 실습 ]
#딥러닝 관련 라이브러리 불러오기
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
#MNIST 데이터셋 불러오기
mnist=keras.datasets.mnist
#MNIST 데이터셋 학습용(x,y), 테스트용(x,y)으로 나누기
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#학습용 데이터 형태 살펴보기
x_train.shape
#학습용 첫번째 데이터 살펴보기 1
x_train[0]
#학습용 첫 번째 데이터 살펴보기 2
for x in x_train[0]:
for i in x:
print('{:3} '.format(i), end='')
print()
#위 숫자가 어떤 숫자인지 확인해보기
y_train[0]
#데이터 전처리(0-1사이 숫자로)
x_train=x_train/255
x_test=x_test/255
#데이터 전처리 결과 확인
x_train[0]
#모델만들기 : 입력층(784)-은닉층1(256)-은닉층2(128)-은닉층3(64)-출력층(10)
model=keras.models.Sequential({
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(256, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax') #확률을 출력
})
#모델 컴파일 : 최적화 함수, 손실 함수 설정 + 평가 지표 설정 + 가중치 초기화
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
#모델 확인
model.summary()
#모델 학습 : 전체 데이터는 5번 반복
model.fit(x_train, y_train, epochs=5)
#모델 평가
model.evaluate(x_test, y_test)
#예측 - 0번째 숫자 이미지로 보기
plt.imshow(x_train[0], cmap='gray')
plt.show()
#예측 - 0번째 숫자 예측하기
print(model.predict(x_train[0].reshape(1,28,28)))
#예측- 0번째 숫자 예측하기 by numpy
print(np.argmax(model.predict(x_train[0].reshape(1,28,28))))
'ML & DL & Data Science' 카테고리의 다른 글
[데이터마이닝] Pandas 기본 사용법 (0) | 2022.06.22 |
---|---|
[데이터마이닝] Numpy 기본 사용법 (0) | 2022.06.22 |
[딥러닝] 딥러닝의 학습과 평가 (0) | 2022.06.21 |
[딥러닝] 딥러닝의 개요 (0) | 2022.06.21 |
[딥러닝] 뉴런과 퍼셉트론 (0) | 2022.06.21 |