TensorFlow 공식문서
텐서플로 공식문서 튜토리얼을 공부한 내용이다.
케라스란?
거의 모든 종류의 딥러닝 모델을 간편하게 만들고 훈련시킬 수 있는 파이썬으로 작성된 오픈소스 신경망 라이브러리이다.
운동화나 셔츠 같은 옷 이미지를 분류하는 신경망 모델을 훈련하는 예제이다.
# tensorflow, keras 임포트
import tensorflow as tf
from tensorflow import keras
# 헬퍼(helper) 라이브러리
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
load_data()
함수 호출시 네 개의 numpy 배열 반환
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
데이터 탐색
train_images.shape
len(train_labels)
train_labels
데이터 전처리
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
값 범위 조정 [0-255] 에서 [0-1]
train_images = train_images/255.0
test_images = test_images/255.0
훈련 데이터 처음 25개 이미지, 클래스 이름 출력해보기
plt.figure(figsize(10, 10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # 2차원 배열의 이미지 포맷을 28*28=784픽셀의 1차원 배열로 변환
keras.layers.Dense(128, activation='relu'), # 128개의 노드
keras.layers.Dense(10, activation='softmax') # 10개의 노드
)]
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
train_images
, train_labels
배열)test_images
배열을 통한 예측이 test_labels
배열의 레이블과 맞는지 확인)test_labels
배열의 레이블과 일치하는지 확인model.fit(train_images, train_labels, epochs=10)
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print("\n테스트 정확도: ", test_acc)
probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])
# 첫번째 예측
predictions = model.predict(test_images)
predictions[0]
# 가장 높은 신뢰도 가진 레이블 찾기
np.argmax(predictions[0])
# 예측과 test_label 비교
test_labels[0]