728x90
시각적으로 나타낼 수 있는 차원은 3차원까지이다.
4차원, 5차원....수많은 차원이 존재하는데 시각적으로 나타내지 못할 뿐이다.

 

우리가 사용하는 대부분의 프레임워크는 데이터의 표현방식이 Numpy로 되어 있다.

데이터의 방향은 텐서(Tensor)로 나타낸다.

 

출처: https://www.mathsisfun.com/

 

0차원 텐서(Scalar)

방향성이 없이 하나의 숫자(데이터)를 담고 있다(=스칼라)

 

 

1차원 배열(1차원 텐서, 1D array)

ex. shape: (3,)과 같이 나타난다.

[10 20 30]

 

 

2차원 배열(2차원 텐서, 2D array)

ex. shape: (3, 3)과 같이 나타난다.

[[1 3 5] [4 5 6]]

 

 

3차원 배열(3차원 텐서, 3D array)

3차원 텐서를 사용하는 가장 대표적인 예는 이미지 표현.

 

 

4차원 배열(4차원 텐서, 4D array)

1, 2, 3 + Time

 


파이썬 코드로 확인해 보기

 

import math
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')

-0차원 텐서(Scalar)

 
*배열 만들기
x = np.array(3)

print(x)
print(x.shape)
print(np.ndim(x))
 
>>

3

()

0

---> 값은 3이고 차원이 없으므로 모양이 없으며, 0차원이다.


1차원 배열(1차원 텐서, 1D array)

*배열(텐서) 두 개 만들어 보자
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
연산해 보자.
 
*연산하기(덧셈)
c = a + b
print(c)
print(c.shape)
print(np.ndim(c))

>>

[ 6 8 10 12]

(4,)

1

 

*연산하기(곱셈)

c = a * b
print(c)
print(c.shape)
print(np.ndim(c))

>>

[ 5 12 21 32]

(4,)

1

 

*연산하기(스칼라와 벡터의 곱)

- 일괄적용할 때 쓰인다.

**배열 만들기
a = np.array(10) #스칼라
b = np.array([1,2,3]) #1차원 텐서

c = a * b
print(c)

>> [10 20 30]


2차원 배열(2차원 텐서, 2D array)

전치 행렬로 만들어 보자.(행과 열을 바꾼 배열의 형태)

*배열 만들기
A = np.array([[1,3,4], [4,5,6]])

print('A\n', A)
print('A.shape\n', A.shape)
print('--------------------')
 
>>
A
[[1 3 4]
[4 5 6]]
A.shape
(2, 3)
--------------------
A = np.array([[1,3,4], [4,5,6]])

print('A\n', A)
print('A.shape\n', A.shape)
print('--------------------')
A_ = A.T
print('A_\n', A_)
print('A_.shape\n', A_.shape)
print('--------------------')

>>

A_

[[1 4]

[3 5]

[4 6]]

A_.shape

(3, 2)

--------------------


3차원 배열(3차원 텐서, 3D array)

Keras를 이용해 MNIST 데이터를 다운받는다.

from keras.datasets import mnist
mnist.load_data()
 
---> 변수에 저장한다. (학습용 데이터, 학습용 라벨), (테스트용 데이터, 데스트용 라벨)
(train_images,train_labels), (test_images, test_labels) = mnist.load_data()
*차원 확인하기
print(train_images.ndim)

>> 3

 

*학습용 데이터 모양 확인하기

print(train_images.shape)

>> (60000, 28, 28)

 

*학습용 데이터 타입 확인하기

print(train_images.dtype)
>> uint8
---> 음의 정수가 아닌 양의 정수 2^8=256개

*첫 번째 장 확인해 보기. color map 사용

temp_image = train_images[0]
plt.imshow(temp_image,cmap='gray')
>>
*첫 번째 장 라벨 확인하기
 
train_labels[0]
>> 5
 
*세 번째 장 라벨 확인하기
train_labels[3]
>> 1
728x90

+ Recent posts