NIRVANA
[7장 1 ~ 3절] 딥러닝 비전 본문
*파이썬 버전이 여러개 깔려 있는데 이중 matplotlib이 도대체 어디에 설치되어 있는지를 모르겠어서..그냥 코랩에서 했다..^~^
import tensorflow as tf
import tensorflow.keras.datasets as ds
import matplotlib.pyplot as plt
(x_train, y_train), (x_test, y_test) = ds.mnist.load_data()
print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)
x의 데이터 형태를 보면 각각 28x28맵이 60,000장 10,000만장 쌓여있는 3차원 구조임을 알 수 있다.
plt.figure(figsize=(24, 3))
plt.suptitle('MNIST', fontsize=30)
for i in range(10):
plt.subplot(1, 10, i+1)
plt.imshow(x_train[i], cmap='gray')
plt.xticks([]); plt.yticks([])
plt.title(str(y_train[i]), fontsize=30
load_data()함수로 MNIST 데이터셋을 읽어온다.
MNIST에는 70,000개의 필기 숫자 샘플이 있으며 60,000개의 훈련 집합과 10,000개의 테스트 집합으로 분할되어 있다.
특징 벡터(모델의 입력, 즉 x값)는 숫자 28 x 28 맵으로 표현
참값(모델의 출력, 즉 y값)은 숫자 부류를 나타내기 위해 0~9사이의 값을 가진다.
(x_train, y_train), (x_test, y_test) = ds.cifar10.load_data()
print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)
class_name = ['airplane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
CIFAR-10의 특징 벡터는 RGB를 표현하기 위해 32x32 맵이 3장으로 되어 있는 구조로 32x32x3의 맵으로 표현된다.
x의 데이터 형태를 확인해보면 32x32x3 맵이 각각 50,000장 10,000장 쌓여 있는 4차원 구조임을 알 수 있다.
딥러닝에서는 다차원 배열을 텐서라고 부른다.
따라서 MNIST의 x_train은 60,000x28x28의 3차원 텐서이고 y_train은 60,000크기의 1차원 텐서이다.
plt.figure(figsize=(24, 3))
plt.suptitle('CIFAR-10', fontsize=30)
for i in range(10):
plt.subplot(1, 10, i+1)
plt.imshow(x_train[i], cmap='gray')
plt.xticks([]); plt.yticks([])
plt.title(class_name[y_train[i, 0]], fontsize=30)
subplot은 현재 조작중인 figure에 subplot을 만드는 것으로
plt.subplot(nrow, ncols, index)
와 같이 사용한다.
nrow: 행의 수
ncols: 열의 수
index: 위치
좌측 상단에서부터 1로 시작하며, 오른쪽으로 세어나간다. 해당 행을 다 센 경우에는 다음 행부터 이어서 센다.
참고: https://tempdev.tistory.com/35
참고 및 출처: https://www.yes24.com/Product/Goods/116755317