딥러닝 (Deep Learning)/딥러닝 기초

신경망의 데이터 표현 2 - data 다루기

DS지니 2021. 4. 24. 00:18
728x90
반응형
[케라스 창시자에게 배우는 딥러닝] 참고

 

사실 딥러닝을 시작하면서 코딩을 이해하는데 어려움이 많았다. 기초가 부족한채 계속 달려나가니 공부하면 할 수록 카오스 상태에 빠졌다. 기본 용어라던지 (사실 tensor가 뭔지도 몰랐다.) 이미지를 숫자로 표현하고 슬라이드를 자유자재로 사용하고 이미지를 추출하는 것 등 기본적인 부분부터 흔들렸던 것 같다. 

기초부터 다시 차근차근 익혀보자!

 

 

📢 목차

1. 이미지 데이터 tensor 속성, 이미지 불러오기

2. 이미지 개수 조절, 이미지 자르기(픽셀 조절) - slicing

3. 배치 데이터

 

 


 

1. 이미지 데이터 tensor 속성, 이미지 불러오기

 

MNIST 데이터의 이미지 배열은 8비트 정수형 3D 텐서이다.

정확하게 28 X 28크기의 정수 행렬 6만 개가 있는 배열임을 알 수 있다.

 

train_images[4]

0~255의 원소를 갖는 행렬

train_labels[4]

9

# MNIST 이미지 불러오기

digit = train_images[4]

import matplotlib.pyplot as plt

plt.imshow(digit, cmap=plt.cm.binary)
plt.show()

mnist 데이터셋 5번 째 샘플

각 행렬은 흑백 이미지고, 행렬의 각 원소는 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()

이미지 9의 오른쪽 아래 이미지 픽셀 자르기

# 음수 인덱스 (현재축 : 상대적인 위치)
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()

이미지 9의 오른쪽 아래 이미지 픽셀 자르기

 


 

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)이라고 부른다.

 

 

728x90
반응형