2.2.5 핵심 속성

2.2.4 3D 텐서와 고차원 텐서 | 목차 | 2.2.6 넘파이로 텐서 조작하기

 

텐서는 3개의 핵심 속성으로 정의됩니다.

  • 축의 개수(랭크): 예를 들어 3D 텐서에는 3개의 축이 있고, 행렬에는 2개의 축이 있습니다. 넘파이 라이브러리에서는 ndim 속성에 저장되어 있습니다.
  • 크기shape: 텐서의 각 축을 따라 얼마나 많은 차원이 있는지를 나타낸 파이썬의 튜플tuple입니다. 예를 들어 앞에 나온 행렬의 크기는 (3, 5)이고 3D 텐서의 크기는 (3, 3, 5)입니다. 벡터의 크기는 (5,)처럼 1개의 원소로 이루어진 튜플입니다. 배열 스칼라는 ()처럼 크기가 없습니다.
  • 데이터 타입(넘파이에서는 dtype에 저장됩니다): 텐서에 포함된 데이터의 타입입니다. 예를 들어 텐서의 타입은 float32, uint8, float64 등이 될 수 있습니다. 드물게 char 타입을 사용합니다. 텐서는 사전에 할당되어 연속된 메모리에 저장되어야 하므로 넘파이 배열은 (그리고 대부분 다른 라이브러리는) 가변 길이의 문자열을 지원하지 않습니다.

이를 구체적으로 확인해 보기 위해서 MNIST 예제에서 사용했던 데이터를 다시 들여다봅시다. 먼저 MNIST 데이터셋을 불러들입니다.

from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

그다음 train_images 배열의 ndim 속성으로 축의 개수를 확인합니다.

>>> print(train_images.ndim)
3

다음은 배열의 크기입니다.

>>> print(train_images.shape)
(60000, 28, 28)

dtype 속성으로 데이터 타입을 확인합니다.

>>> print(train_images.dtype)
uint8

이 배열은 8비트 정수형 3D 텐서입니다. 좀 더 정확하게는 28×28 크기의 정수 행렬 6만 개가 있는 배열입니다. 각 행렬은 하나의 흑백 이미지고, 행렬의 각 원소는 0에서 255 사이의 값을 가집니다.

3D 텐서에서 다섯 번째 샘플을 (파이썬의 표준 과학 라이브러리 중 하나인) 맷플롯립Matplotlib 라이브러리를 사용해서 확인해 봅시다11(그림 22 참고).

코드 2-6 다섯 번째 이미지 출력하기

digit = train_images[4]
import matplotlib.pyplot as plt
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()
065

그림 2-2 데이터셋에 있는 다섯 번째 샘플

 


 

11 역주 배열의 인덱스는 0부터 시작하므로 다섯 번째 이미지의 인덱스가 4입니다.

 

2.2.4 3D 텐서와 고차원 텐서 | 목차 | 2.2.6 넘파이로 텐서 조작하기

 

이 글은 도서출판 길벗에서 출간한  “케라스 창시자에게 배우는 딥러닝“의 1장~3장입니다. 이 책의 저작권은 (주)도서출판 길벗에 있으므로 무단 복제 및 무단 전제를 금합니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.