[케라스 창시자에게 배우는 딥러닝] 참고
사실 딥러닝을 시작하면서 코딩을 이해하는데 어려움이 많았다. 기초가 부족한채 계속 달려나가니 공부하면 할 수록 카오스 상태에 빠졌다. 기본 용어라던지 (사실 tensor가 뭔지도 몰랐다.) 이미지를 숫자로 표현하고 슬라이드를 자유자재로 사용하고 이미지를 추출하는 것 등 기본적인 부분부터 흔들렸던 것 같다.
기초부터 다시 차근차근 익혀보자!
📢 목차
1. 이미지 데이터 tensor 속성, 이미지 불러오기
2. 이미지 개수 조절, 이미지 자르기(픽셀 조절) - slicing
1. 이미지 데이터 tensor 속성, 이미지 불러오기
MNIST 데이터의 이미지 배열은 8비트 정수형 3D 텐서이다.
정확하게 28 X 28크기의 정수 행렬 6만 개가 있는 배열임을 알 수 있다.
train_images[4]
train_labels[4]
9
# MNIST 이미지 불러오기
digit = train_images[4]
import matplotlib.pyplot as plt
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()
각 행렬은 흑백 이미지고, 행렬의 각 원소는 0에서 255 사이의 값을 갖는다.
이 3D 텐서에서 5번 째 샘플은 9의 레이블 값을 나타낸다.
2. 이미지 개수 조절, 이미지 자르기(픽셀 조절) - slicing
- 11번째부터 101번째까지 숫자 선택해 (90, 28, 28) 크기의 배열을 만들기
my_slice = train_images[10:100]
print(my_slice.shape)
(90, 28, 28)
my_slice = train_images[10:100, :, :]
my_slice.shape
(90, 28, 28)
my_slice = train_images[10:100, 0:28, 0:28]
my_slice.shape
(90, 28, 28)
- 이미지 자르기(픽셀 조절)
# 오른쪽아래 14x14픽셀
my_slice = train_images[:, 14:, 14:]
print(my_slice.shape)
# 이미지 불러오기
import matplotlib.pyplot as plt
digit = my_slice[4]
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()
# 음수 인덱스 (현재축 : 상대적인 위치)
my_slice = train_images[:, 7:-7, 7:-7]
print(my_slice.shape)
# 이미지 불러오기
import matplotlib.pyplot as plt
digit = my_slice[4]
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()
3. 배치 데이터
일반적으로 딥러닝에서 사용하는 모든 데이터 텐서의 첫 번째 축(=0)은 샘플 축(sample axis)이다.
샘플 차원(sampe dimension)이라고도 부른다. (MNIST 예제에서는 숫자 이미지가 샘플이다.)
딥러닝 모델은 한 번에 전체 데이터셋을 처리하지 않는다. 그 대신 데이터를 작은 배치(batch)로 나눈다.
#MNIST 숫자 데이터에서 크기가 128인 배치
batch = train_images[:128]
batch = train_images[128:256]
# n번째 batch 구하기
batch = train_images[128 * n:128 * (n + 1)]
이런 배치 데이터를 다룰 때는 첫번째 축(0번 축)을 배치 축(batch axis) 또는 배치 차원(batch dimension)이라고 부른다.
'딥러닝 (Deep Learning) > 딥러닝 기초' 카테고리의 다른 글
텐서 연산 기초 공부하기 (0) | 2021.04.24 |
---|---|
신경망의 데이터 표현 3 - tensor & data 종류와 예시 (0) | 2021.04.24 |
신경망의 데이터 표현 1 - tensor (0) | 2021.04.23 |
딥러닝 알고리즘의 변화 (0) | 2021.04.22 |
딥러닝의 개념과 동작 원리 (0) | 2021.04.22 |