Artificial Intelligence/πŸ“–

[κ°œλ…] Tensor

geum 2021. 5. 11. 00:04

 

ν…μ„œν”Œλ‘œμš° λΈ”λ‘œκ·Έ(tensorflow.blog/) λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

 

 

Tensor

λͺ¨λ“  λ¨Έμ‹ λŸ¬λ‹ μ‹œμŠ€ν…œμ΄ 일반적으둜 μ‚¬μš©ν•˜λŠ” κΈ°λ³Έ 데이터 ꡬ쑰.

데이터λ₯Ό μœ„ν•œ μ»¨ν…Œμ΄λ„ˆλΌκ³  ν•  수 있으며, λŒ€λΆ€λΆ„ μˆ˜μΉ˜ν˜• 데이터λ₯Ό λ‹€λ£¨λŠ” 데에 μ‚¬μš©λ˜κ³  μžˆλ‹€. μž„μ˜μ˜ 차원 개수λ₯Ό κ°€μ§€λŠ” ν–‰λ ¬μ˜ μΌλ°˜ν™”λœ λͺ¨μŠ΅μ΄κΈ°λ„ ν•˜λ‹€.

 

* 차원을 'μΆ•'(axis)이라고 ν•˜κΈ°λ„ 함

 

 

0D ν…μ„œ - 슀칼라 ν…μ„œ

ν•˜λ‚˜μ˜ 숫자만 λ‹΄κ³  μžˆλŠ” ν…μ„œλ‘œ numpyμ—μ„œ float32λ‚˜ float64 νƒ€μž…μ˜ 숫자λ₯Ό μ˜λ―Έν•œλ‹€.

슀칼라 ν…μ„œμ˜ μΆ• κ°œμˆ˜λŠ” 0κ°œμ΄λ‹€.

 

ex) x = np.array(12)

 

* μΆ• 개수λ₯Ό 랭크(rank)라고 ν•˜κΈ°λ„ 함

** tf.constant() : μƒμˆ˜ ν…μ„œ 생성

 

1D ν…μ„œ - 벑터 ν…μ„œ

숫자의 λ°°μ—΄. 단 ν•˜λ‚˜μ˜ 좕을 가진닀.

 

ex) x = np.array([12, 3, 6, 14, 7]) → 5차원 벑터(μ›μ†Œκ°€ 5개이기 λ•Œλ¬Έμ—)

 

⭐ n-D ν…μ„œ vs n-D 벑터

n-D ν…μ„œ : n개의 μΆ•

n-D 벑터 : ν•˜λ‚˜μ˜ 좕을 따라 n개의 차원이 쑴재

 

* μ°¨μ›μˆ˜(dimensionality) : νŠΉμ • 좕을 따라 놓인 μ›μ†Œμ˜ 개수(n-D 벑터)μ΄κ±°λ‚˜ ν…μ„œμ˜ μΆ• 개수(n-D ν…μ„œ, 더 μ •ν™•ν•œ ν‘œν˜„μ€ λž­ν¬κ°€ n인 ν…μ„œ)

 

 

2D ν…μ„œ

λ²‘ν„°μ˜ λ°°μ—΄ λ˜λŠ” ν–‰λ ¬.

ν’€μ–΄ μ“°λ©΄ '0D ν…μ„œμ˜ λ°°μ—΄λ‘œ ν‘œν˜„λœ 1D ν…μ„œμ˜ λ°°μ—΄'이라고 ν•  수 μžˆλ‹€. ν–‰κ³Ό μ—΄ 2개의 좕을 가진닀.

 

x = np.array([[5, 78, 2, 34, 0],
	      [6, 79, 3, 35, 1],
              [7, 80, 4, 36, 2]])

 

 

nD ν…μ„œ - n ≥ 3

3D ν…μ„œλŠ” 2D ν…μ„œλ₯Ό ν•˜λ‚˜μ˜ μƒˆλ‘œμš΄ λ°°μ—΄λ‘œ ν•©μΉœ ν˜•νƒœμ΄κ³ , 3D ν…μ„œλ₯Ό λ˜λ‹€μ‹œ ν•˜λ‚˜λ‘œ ν•©μΉ˜λ©΄ 4D ν…μ„œκ°€ λœλ‹€.

x = np.array([[[5, 78, 2, 34, 0], 
               [6, 79, 3, 35, 1], 
               [7, 80, 4, 36, 2]], 
              [[5, 78, 2, 34, 0], 
               [6, 79, 3, 35, 1], 
               [7, 80, 4, 36, 2]], 
              [[5, 78, 2, 34, 0], 
               [6, 79, 3, 35, 1], 
               [7, 80, 4, 36, 2]]]) 

 

 

핡심

1) μΆ•μ˜ 개수(랭크)

: numpy 라이브러리의 ndim을 μ΄μš©ν•΄ μ•Œ 수 μžˆλ‹€.

 

2) 크기(shape)

: ν…μ„œμ˜ 각 좕을 따라 μ–Όλ§ˆλ‚˜ λ§Žμ€ 차원이 μžˆλŠ”μ§€ λ‚˜νƒ€λ‚Έ 파이썬 νŠœν”Œ

ex) 2D ν…μ„œμ˜ shapeκ°€ (3, 5)일 λ•Œ 3D ν…μ„œ shapeλŠ” (n, 3, 5) → 2D ν…μ„œκ°€ nκ°œλΌλŠ” 의미

 

3) 데이터 νƒ€μž…(dtype)

: ν…μ„œμ— ν¬ν•¨λœ λ°μ΄ν„°μ˜ νƒ€μž…. numpy 배열은 κ°€λ³€ 길이 λ¬Έμžμ—΄μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

μ‹€μ œ 사둀

  • 벑터 데이터 : λŒ€λΆ€λΆ„μ˜ κ²½μš°μ— ν•΄λ‹Ήν•˜λŠ” (samples, features) 크기의 2D ν…μ„œ
  • μ‹œκ³„μ—΄ 데이터(μ‹œν€€μŠ€ 데이터) : (samples, timesteps, features) 크기의 3D ν…μ„œ
  • 이미지 데이터 : (samples, height, width, channels) λ˜λŠ” (samples, channels, height, width) 크기의 4D ν…μ„œ
  • λ™μ˜μƒ 데이터 : (samples, frames, height, width, channels) λ˜λŠ” (samples, frames, channels, height, width) ν¬κΈ°μ˜ 5D ν…μ„œ