Introduction
Tensorflowλ₯Ό μ¬μ©νκΈ° μν κΈ°λ³Έμ μΈ κ°λ
λ€μ μ€λͺ
νλ€.
ν
μ (tensor)
- μ΅κ·Όμ λͺ¨λ λ¨Έμ λ¬λ μμ€ν
μ μΌλ°μ μΌλ‘ ν
μλ₯Ό κΈ°λ³Έ λ°μ΄ν° κ΅¬μ‘°λ‘ μ¬μ©
ν
μλ λ¨Έμ λ¬λμ κΈ°λ³Έ κ΅¬μ± μμμ
λ°μ΄ν°(μ«μ)λ₯Ό μν 컨ν
μ΄λ
μμμ μ°¨μ κ°μλ₯Ό κ°μ§λ νλ ¬μ μΌλ°νλ λͺ¨μ΅
- μ°¨μ(dimension)μ μ’
μ’
μΆ(axis)μ΄λΌκ³ λΆλ¦
μ€μΉΌλΌ(0D ν
μ)
- νλμ μ«μλ§ λ΄κ³ μλ ν
μ
- μ€μΉΌλΌ(scalar), μ€μΉΌλΌ ν
μ, 0μ°¨μ ν
μ, 0D ν
μ λ±μΌλ‘ λΆλ¦
- λνμ΄μ uint8μ΄λ float32 νμ
μ μ«μκ° μ€μΉΌλΌ ν
μμ ν΄λΉ
- ndim μμ±μ μ¬μ©νμ¬ μΆ κ°μ νμΈ κ°λ₯ ~ ν
μμ μΆ κ°μλ₯Ό λν¬(rank)λΌκ³ λ λΆλ¦
- μ€μΉΌλΌ ν
μμ μΆ κ°μλ 0μ(ndim = = 0)
import numpy as np
x = np.array(23.7)
x
x.ndim
array(23.7)
0
벑ν°(1D ν
μ)
- μ«μμ λ°°μ΄
o λ²‘ν° λλ 1D ν
μλΌκ³ λΆλ¦
- μ°Έκ³ ) 3D λ²‘ν° VS. 3D ν
μ
o 3D 벑ν°λ νλμ μΆμ λ°λΌ 3κ°μ λ°μ΄ν°(μ«μ)λ₯Ό κ°μ§
o 5D ν
μλ 5κ°μ μΆμ κ°μ§ ν
μ (rankκ° 5μΈ ν
μ)
x = np.array([7, 11, 2])
x
x.ndim
array([7, 11, 2])
1
ν΅μ¬ μμ±
- μΆμ κ°μ(λν¬): μλ₯Ό λ€μ΄ 3D ν
μμλ 3κ°μ μΆμ΄ μκ³ , νλ ¬μλ 2κ°μ μΆμ΄ μμ
- λνμ΄ λΌμ΄λΈλ¬λ¦¬μμλ ndim μμ±μ μ μ₯λμ΄ μμ
- ν¬κΈ°(shape): ν
μμ κ° μΆμ λ°λΌ μΌλ§λ λ§μ μ°¨μμ΄ μλμ§λ₯Ό λνλΈ νμ΄μ¬μ νν
(tuple)
- μμ λμ¨ νλ ¬μ ν¬κΈ°λ (4, 3)μ΄κ³ 3D ν
μμ ν¬κΈ°λ (3, 3, 5)μ
- 벑ν°μ ν¬κΈ°λ (3,)μ²λΌ 1κ°μ μμλ‘ μ΄λ£¨μ΄μ§ ννμ
- λ°°μ΄ μ€μΉΌλΌλ ()μ²λΌ ν¬κΈ°κ° μμ
- λ°μ΄ν° νμ
(λνμ΄μμλ dtypeμ μ μ₯λ¨): ν
μμ ν¬ν¨λ λ°μ΄ν°μ νμ
- ν
μμ νμ
μ float32, uint8, float64 λ±μ΄ λ μ μμ (λλ¬Όκ² char νμ
μ¬μ©)
o ν
μλ μ¬μ μ ν λΉλμ΄ μ°μλ λ©λͺ¨λ¦¬μ μ μ₯λμ΄μΌ νλ―λ‘ λνμ΄ λ°°μ΄μ κ°λ³ κΈΈμ΄μ λ¬Έμμ΄μ μ§μνμ§ μμ
from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labes) =
mnist.load_data()
print(train_images.ndim)
print(train_images.shape)
print(train_images.dtype)
3
(60000, 28, 28)
uint
λ°°μΉ(batch) λ°μ΄ν°
- μΌλ°μ μΌλ‘ λ°μ΄ν° ν
μμ 첫 λ²μ§Έ μΆ(μΈλ±μ€ 0)μ μν μΆ(sample axis)
o μν μ°¨μ(sample dimension)μ΄λΌκ³ λ λΆλ¦
- λ₯λ¬λ λͺ¨λΈμ ν λ²μ μ 체 λ°μ΄ν°μ
μ μ²λ¦¬νμ§ μκ³ μμ κ·λͺ¨μ λ°°μΉ(batch)λ‘ λλ
batch = train_images[:128]
batch = train_images[128:256]
batch = train_images[128*n: 128*(n+1)]
ν
μμ μ€μ μ¬λ‘
- λ²‘ν° λ°μ΄ν°
o (samples, features) ν¬κΈ°μ 2D ν
μ
- μκ³μ΄ λ°μ΄ν° λλ μνμ€(sequence) λ°μ΄ν°
o (samples, timesteps, features) ν¬κΈ°μ 3D ν
μ
- μ΄λ―Έμ§
o (samples, height, width, channels) λλ (samples, channels, height, width) ν¬κΈ°μ 4D ν
μ
- λμμ
o (samples, frames, height, width, channels) λλ
(samples, frames, channels, height, width) ν¬κΈ°μ 5D ν
μ
λ²‘ν° λ°μ΄ν°
- λ°μ΄ν°μ
μμλ νλμ λ°μ΄ν° ν¬μΈνΈκ° 벑ν°λ‘ μΈμ½λ©
- 첫 λ²μ§Έ μΆμ μν μΆμ΄κ³ , λ λ²μ§Έ μΆμ νΉμ§ μΆ(feature axis)
- μ) μ¬λμ λμ΄, μ°νΈ λ²νΈ, μλμΌλ‘ ꡬμ±λ μΈκ΅¬ ν΅κ³ λ°μ΄ν°
o κ° μ¬λμ 3κ°μ κ°μ κ°μ§ 벑ν°λ‘ ꡬμ±λ¨
o 10λ§ λͺ
μ΄ ν¬ν¨λ μ 체 λ°μ΄ν°μΈνΈλ (100000, 3) ν¬κΈ°μ ν
μμ μ μ₯λ μ μμ
μκ³μ΄ λ°μ΄ν° λλ μνμ€ λ°μ΄ν° (1)
- μκ³μ΄ λ°μ΄ν°λ μκ° μΆ(νμμ€ν
)μ ν¬ν¨νμ¬ 3D ν
μλ‘ μ μ₯λ¨
- μνμ€ λ°μ΄ν°λ μμ μΆ(μ€ν
)μ ν¬ν¨νμ¬ 3D ν
μλ‘ μ μ₯λ¨
- κ° μνμ 벑ν°(2D ν
μ)μ μνμ€λ‘ μΈμ½λ©

μκ³μ΄ λ°μ΄ν° λλ μνμ€ λ°μ΄ν° (2)
- μΌλ°μ μΌλ‘ νμμ€ν
μΆμ λ λ²μ§Έ μΆ(μΈλ±μ€κ° 1μΈ μΆ)μ μ¬μ©
- μ) μ£Όμ κ°κ²© λ°μ΄ν°μΈνΈ: 1λΆλ§λ€ νμ¬ μ£Όμ κ°κ²©κ³Ό μ§λ 1λΆ λμμ μ΅κ³ κ°κ²©κ³Ό μ΅μ
κ°κ²© μ μ₯
o 1λΆλ§λ€ λ°μ΄ν°λ 3D 벑ν°λ‘ μΈμ½λ©λ¨
o ν루 λμμ κ±°λλ (390, 3) ν¬κΈ°μ 2D ν
μλ‘ μΈμ½λ© κ°λ₯ (ν루μ κ±°λ μκ°: 390λΆ)
o 250μΌμΉμ λ°μ΄ν°λ (250, 390, 3) ν¬κΈ°μ 3D ν
μλ‘ μ μ₯
β’ 1μΌμΉ λ°μ΄ν°κ° νλμ μν
μ΄λ―Έμ§ λ°μ΄ν°
- μ΄λ―Έμ§λ μ νμ μΌλ‘ λμ΄, λλΉ, μ±λ μμ 3μ°¨μμΌλ‘ μ΄λ£¨μ΄μ§
o (MNIST λ°μ΄ν°μΈνΈ) grayscale μ΄λ―Έμ§λ λ¨μΌ μ±λλ§μ κ°μ§κ³ μμ΄ 2D ν
μλ‘ μ μ₯ν μ μμ§λ§ κ΄
λ‘μ μ΄λ―Έμ§ ν
μλ 3Dλ‘ μ μ₯
- μ1) 256Γ256 ν¬κΈ°μ grayscale μ΄λ―Έμ§μ λν
128κ°μ λ°°μΉ: (128, 256, 256, 1) ν¬κΈ° ν
μ
- μ2) μ1μ μ΄λ―Έμ§κ° μ»¬λ¬ μ΄λ―Έμ§μ΄κ³
128κ°μ λ°°μΉ: (128, 256, 256, 3) ν¬κΈ° ν
μ

λΉλμ€ λ°μ΄ν°
- νλμ λΉλμ€λ νλ μμ μ°μμ΄κ³ κ° νλ μμ νλμ μ»¬λ¬ μ΄λ―Έμ§μ
- νλ μμ (height, width, color_depth)μ 3D ν
μλ‘ μ μ₯ Γ νλ μμ μ°μμ
(frames, height, width, color_depth)μ 4D ν
μλ‘ μ μ₯
- μ¬λ¬ λΉλμ€μ λ°°μΉλ (samples, frames, height, width, color_depth)μ 5D ν
μλ‘
μ μ₯ν μ μμ
- μ1) 60μ΄ 144Γ256 λΉλμ€ ν΄λ¦½μ μ΄λΉ 4νλ μμΌλ‘ μνλ§ ~ (240, 144, 256, 3)
- μ2) μ1μ λΉλμ€ ν΄λ¦½μ 4κ° κ°μ§ λ°°μΉ ~ (4, 240, 144, 256, 3) ν¬κΈ°μ ν
μμ μ μ₯
TensorFlow 2.x
- 2019.10 TensorFlow 2.0 Release
o μ΅μ λ²μ : 2.4.0 (2020λ
10μ κΈ°μ€)
- Eager execution (Define by Run) ~ μΌλ°μ μΈ νλ‘κ·Έλλ° λ°©μ, PyTorchμ μν₯
- Functions, not session
- AutoGraph ~ μλ κ°μ (@tf.function)
- Keras Python API
- API Cleanup (no more globals)
TF1 Vs TF2

- μ½λμ μ°¨μ΄

- AutoGraph
