(μ΄λ² νλ‘μ νΈ μ½λλ ν¨μΊ λ₯λ¬λ κ°μλ₯Ό μ°Έκ³ ν μ½λμ΄λ€)
<μ΄μ ν¬μ€ν
>
https://silvercoding.tistory.com/3
[MNIST νλ‘μ νΈ] 1. MNIST λ°μ΄ν° μμ보기
(μ΄λ² νλ‘μ νΈ μ½λλ ν¨μΊ λ₯λ¬λ κ°μλ₯Ό μ°Έκ³ ν μ½λμ΄λ€) μ€λ μμλ³Ό λ°μ΄ν°λ λ₯λ¬λ μ λ¬Έ λ 무쑰건 λ°°μ°λ μ λͺ ν μ΄λ―Έμ§ λ°μ΄ν°μΈ MNIST λ°μ΄ν°μ μ΄λ€. μ¬μ§κ³Ό κ°μ΄ μμΌλ‘ μ§μ μ΄ μ«μ
silvercoding.tistory.com
μ΄λ²μλ RNNλͺ¨λΈλ§μ μν MNIST λ°μ΄ν°μ
μ μ²λ¦¬λ₯Ό νλ€. λͺ¨λΈλ§λ μ€μνμ§λ§ μ΄λ―Έ νλ₯νμ λΆλ€μ΄ λ§λ€μ΄ λμ μ±λ₯ μ’μ λͺ¨λΈλ€μ μ¬μ©νλ κ²μ΄ λλΆλΆμ΄κΈ° λλ¬Έμ μμ λ₯λ¬λμμλ μ μ²λ¦¬ λν μ€μν λΆλΆμΈ κ² κ°λ€.
μ°μ μ€κ°μ€κ°μ λ°μ΄ν°μ ν¬κΈ°λ νμ
, λ²μλ₯Ό νμΈνλ κ²μ΄ λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°μ μ€μν μ΅κ΄μ΄λΌκ³ νλ€. λμ€μ λͺ¨λ λΆμμ λλλλ° κ°μκΈ° μμλ λ°μ΄ν°κ° μλ€λ κ²μ μκ²λλ κ²½μ°κ° μ€μ λ‘ μΌμ΄λ μ μκ³ , λ°λΌμ μ΄λ₯Ό λλΉν΄μΌνκΈ° λλ¬Έμ΄λ€.
μ μ²λ¦¬ μμ
(1) λ°μ΄ν°μ λ²μ νμΈ
μ λ²μκ°μ MNISTλ°μ΄ν°λ 0-255λ‘ μ΄λ£¨μ΄μ Έ μλ uint8 λ°μ΄ν°μμ μμλ€. λ°λΌμ λ§λμ§ νμΈν΄ 보λλ‘ νμ.
- 0μ΄ μλ μ«μ μΆλ ₯
print(list(filter(lambda x: x != 0, train_images[0].reshape(-1)))[:50])
print(list(filter(lambda x: x != 0, test_images[0].reshape(-1)))[:50])
MNISTμ΄λ―Έμ§μμ λ°°κ²½λΆλΆμ λͺ¨λ 0μ΄μλ€. κ·Έλ κΈ°μ 0μ΄ μλ μ«μλ€λ§ μΆλ ₯νμ¬ λ°μ΄ν°λ₯Ό νμΈν΄λ³΄μ. λ무 λ§μΌλ 50κ°κΉμ§λ§ μΆλ ₯νμ¬ νμΈνλ€.
- μ΅λκ°, μ΅μκ° μΆλ ₯
print(max(train_images.reshape(-1)), min(train_images.reshape(-1)) )
print(max(test_images.reshape(-1)), min(test_images.reshape(-1)) )
μ΄λ²μ trainκ³Ό testμ΄λ―Έμ§ μ 체 μ«μμ€μμ μ΅λκ°κ³Ό μ΅μκ°μ μΆλ ₯ν΄λ³΄μλ€. λλ€ 255 0 μ΄ λμ¨λ€λ©΄ μ΄μμμ!
(2) data type λ³κ²½νκΈ° (μ μν -> μ€μν)
λ₯λ¬λμ λλΆλΆ 0κ³Ό 1μ¬μ΄μ μ€μνμΌλ‘ μ΄λ£¨μ΄μ Έ μλκ² ν¨μ¨μ μ΄λ―λ‘ μ μνμ΄μλ MNISTλ°μ΄ν°λ₯Ό μ€μνμΌλ‘ λ°κΎΈμ΄μ£Όλ μ μ°¨κ° νμνλ€.
test_images = test_images.astype(np.float64)
train_images = train_images.astype(np.float64)
astype ν¨μλ‘ νμ
μ λ°κΎΈμ΄μ€ μ μλ€. μμκ°μ΄ μμ±νμ¬ uint8 -> float64 λ°μ΄ν° νλ³νμ ν΄λ³΄μλ€.
λ€μ μμμ ν΄λ³΄μλ dtypeμΌλ‘ μ°μ΄λ³΄λ©΄ float64λ‘ λ°λ κ²μ μ μ μλ€.
(3) normalize (μ κ·ν) νκΈ°
normalizeμμ
μ νμ¬ 0~1 μ κ°μ κ°μ§λλ‘ λ³νν΄μ£Όλλ‘ νμ.
μμ λ€μκ³Ό κ°λ€.
normalize(x) = x - μ΅μκ° / μ΅λκ° - μ΅μκ°
normalize(x) = x / μ΅λκ° (μ΅μκ°μ΄ 0μΌ λ : μ§κΈ λ°μ΄ν°μ
μ κ²½μ°)
νμ¬ MNIST λ 0-255 μ μ«μμ΄λ―λ‘ λ°μ μμ λ°λ₯΄λ©΄ λλ€.
train_images = train_images / 255
test_images = test_images / 255
κ°λ¨ν μ΅λκ°μΌλ‘ λλμ΄μ£Όλ©΄ 0-1μ¬μ΄μ λ°μ΄ν° κ°μΌλ‘ λ³νμ΄ λ κ²μ΄λ€.
μ΄μ―€μμ μμμ μμ±νλ μ½λλ€μ 볡λΆνμ¬ λ²μ, λ°μ΄ν°ν¬κΈ°, λ°μ΄ν° νμ
μ λͺ¨λ νμΈνκ³ λμ΄κ°μ!
λ²μ 0-1, λ°μ΄ν°ν¬κΈ° μκ³Ό λμΌ, μ΄λ―Έμ§ λ°μ΄ν° νμ
float64, λΌλ²¨ λ°μ΄ν° νμ
uint8 μ΄λ©΄ λͺ¨λ μ μ.
***μ΄λ―Έμ§ μ¬λ¬μ₯ μκ°ν
μ λ²μκ°μλ νλ―μ΄ μ΄λ―Έμ§ νλλ₯Ό μκ°ν νλ κ²μ μ΄λ ΅μ§ μμλ€. κ·Έλ₯ (28, 28) μ΄λ―Έμ§ ν μ₯μ΄μκΈ° λλ¬Έμ΄λ€. κ·Έλ°λ° νλ²μ 5μ₯μ μκ°ν νλ €κ³ ν λλ train_image[:5] λ₯Ό λ½μμ μκ°ννκ² λλ©΄ μ€λ₯κ° λλ€.
plt.imshow(train_images[:5])
TypeError: Invalid shape (5, 28, 28) for image data
μ΄λ κ² νλ©΄ image dataλ‘ μΈμ νμ§ λͺ»νλ€λ κ²μ΄λ€.
λ°λΌμ (28, 5 * 28) ννλ‘ λ³νν΄μ£Όμ΄μΌ νλ€. (μ΄ νν λ³νμ λν΄μλ λμ€μ μμΈν ν¬μ€ν
ν΄μΌκ² λ€.)
- numpy μ hstack μ¬μ©
np.hstack(train_images[:5]).shape
- transpose ν¨μ μ¬μ©
train_images[:5].transpose( (1, 0, 2) ).reshape(28, -1)
hstackμ΄ λ κ°κ²°ν΄ 보μ΄μ§λ§ numpyμ ν¨μμ΄λ―λ‘ νμ μ μ΄λ€. tensorflow μμ μ 곡νλ transposeλ₯Ό μ¬μ©νλ κ²μ΄ λ μμ μ μ΄λ€. transposeλ μμΉλ₯Ό λ°κΏμ£Όλ ν¨μμ΄λ€. transpose((1, 0, 2)) : (0, 1, 2) -> (1, 0, 2) : 1λ²μ§Έ μ리λ₯Ό 0λ²μ§Έ μ리λ‘, 0λ²μ§Έ μ리λ₯Ό 1λ²μ§Έ μ리λ‘, 2λ²μ§Έ μ리λ 2λ²μ§Έ κ·Έλλ‘ λλ€λ μλ―Έ
μ΄μ μ΄λ κ² ν΄μ plt.imshow()μ λ£μ΄μ£Όλ©΄
μ€λ₯μμ΄ μκ°νκ° μ λλ€!
μ΄λ²μλ MNIST λ°μ΄ν°μ
μ μ²λ¦¬, μ¬λ¬μ₯ μκ°ν νλ λ°©λ²μ μμ보μλ€. λ€μμλ μ΄λ―Έμ§μ λ
Έμ΄μ¦ μΆκ°ν ν λλ§μ λͺ¨λΈλ§μ νμ¬ μκΈμ¨λ₯Ό λΆλ₯ν΄λ³΄λ μμ
κΉμ§ λ§μΉλλ‘ νκ² λ€.
'λ°μ΄ν° λΆμ μ΄λ‘ > λ₯λ¬λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[celeba νλ‘μ νΈ] 2. celeba λ°μ΄ν°μ μ μ²λ¦¬, μκ°ν (0) | 2021.06.07 |
---|---|
[celeba νλ‘μ νΈ] 1. celeba λ°μ΄ν° μ΄ν΄λ³΄κΈ° (0) | 2021.06.07 |
[MNIST νλ‘μ νΈ] 3. Noise μΆκ°, RNN λͺ¨λΈλ§ (0) | 2021.06.07 |
[MNIST νλ‘μ νΈ] 1. MNIST λ°μ΄ν° μμ보기 (0) | 2021.06.07 |
λ₯λ¬λμ λνμ¬ (0) | 2021.05.24 |