DLI
ํ์ฌ์์ nvidia DLI๋ฅผ ์๋ฃํ ์ ์๋ ๊ธฐํ๋ฅผ ์ค์ ๊ด๋ จ ๊ต์ก์ ๋ฐ๊ฒ ๋์๋ค.
ํด๋น ๊ต์ก์ ๋ฐ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ๋ ๊ธ์ด๋ค.
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
1. ๋ชจ๋ธ์ ๋ํ ์ด๋ฏธ์ง ์ ๋ ฅ์ ๋จ์ํํ๊ธฐ ์ํด ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ํํํ๊ฒ ๋ง๋ ๋ค.
(28x28) โ (784)๋ก 1์ฐจ์์ผ๋ก ๋ด๋ฆผ
2. ๋ชจ๋ธ์ ๋ํด ์ด๋ฏธ์ง ์ ๋ ฅ ๊ฐ์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ๊ทํํ๋ค.
์ ์ ๊ฐ์ 0๊ณผ 1์ฌ์ด์ ๋ถ๋ ์์์ ๊ฐ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์ ๊ทํ๋ผ๊ณ ํ๋ค.
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ชจ๋ ํฝ์
๊ฐ์ ๊ฐ์ฅ ํฐ ๊ฐ์ผ๋ก ๋๋๋ ๊ฒ์ด๋ค. โ x_train = x_train / x_train.max()
3. ๋ชจ๋ธ์ ๋ํด ๋ ์ด๋ธ ๊ฐ์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ ์ด๋ธ ๊ฐ์ ๋ถ๋ฅํ๋ค.
y ๊ฐ์ ๋ํ์ฌ ์ฌ๋ฌ๊ฐ ๊ฐ์ค ๋ต์ด ์กด์ฌํ ๋ ์ด๊ฒ์ ๋ง์ฐฌ๊ฐ์ง๋ก 0๊ณผ 1๋ก ๋ณ๊ฒฝํด์ค์ผํ๋ค.
|
|
๋ชจ๋ธ ์์ฑ ๋ฐ ํ์ต
tensorflow_tf.keras.layers.Dense
1. ๋ชจ๋ธ ์ธ์คํด์คํ
|
|
2. Input Layer ์์ฑ
model์ layer๋ฅผ ์๋ ๊ณผ์ ์ด๋ค.
units์ ๋ ์ด์ด์ ๋ด๋ฐ ์๋ฅผ ์ง์ ํ๋ค. โ ์ถ๋ ฅ ๊ฐ์ ํฌ๊ธฐ
activation : ํ์ฑํ ํจ์
relu๋ ์๋ ๊ทธ๋ํ ์ฒ๋ผ 0๋ณด๋ค ์์ ๊ฐ์ 0์ผ๋ก ๋ํ๋ด๊ณ 0๋ณด๋ค ํฌ๊ฒ ๋๋ฉด ์ง์ ํํ์ ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
input_shape : input shape์ ์ง์ ํ๋ค.
|
|
3. Hidden Layer ์์ฑ
Hidden Layer๋ฅผ ์ถ๊ฐํ๋ฉด ๋ ๋ง์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ์ ํํ ํ์ต ๊ธฐ๋ํ ์ ์๋ค.
|
|
4. Output Layer ์์ฑ
y ๊ฐ์ ์ดํด๋ณด๋ฉด ์ด 10๊ฐ์ ๊ฐ์ด ์ถ๋ ฅ๋๋ค. ๋ฐ๋ผ์ ์ถ๋ ฅ layer์์๋ units ๊ฐ์ 10๊ฐ๋ก ์ง์ ํด์ค๋ค.
๋ํ ๊ธฐ์กด๊ณผ ๋ค๋ฅด๊ฒ ํ์ฑํ ํจ์๋ฅผ relu๊ฐ ์๋ softmax๋ฅผ ์ฌ์ฉํ์๋ค.
softmax๋ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ์ถ๋ ฅ์ผ๋ก 0~1์ฌ์ด์ ๊ฐ์ผ๋ก ๋ชจ๋ ์ ๊ทํํ๋ฉฐ ์ถ๋ ฅ ๊ฐ๋ค์ ์ดํฉ์ ํญ์ 1์ด ๋๋ ํน์ฑ์ ๊ฐ์ง ํจ์์ด๋ค.
relu์ ์ฐจ์ด์ ์ด ์๋ค๋ฉด, 0๋ณด๋ค ์์ ๊ฐ์ 0์ธ ๋์ ๊ทธ ์ด์์ ๊ฐ์ ์ง์ ํํ๋ก ์ฆ๊ฐํ๋ ํํ๋ฅผ ๋ณด์ด๋ ๋ฐ๋ฉด, softmax๋ 0.1,0.5,0.4 ์ด๋ฐ ํํ๋ก ๊ฐ์ด ์กด์ฌํ๊ฒ ๋๋ค.
์ฆ ๊ฐ ์ค์์ ์ ์ผ ํฐ ๊ฐ์ ๊ฒฐ๊ณผ๋ก ํน์ ํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
|
|
5. model ์์ฝ
์์์ ๋ชจ๋ธ์ layer๋ฅผ ์์๋๋ฐ, ๊ทธ๊ฒ์ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
|
|
6. ๋ชจ๋ธ ์ปดํ์ผํ๊ธฐ
๋ฐ์ดํฐ๋ก ๋ชจ๋ธ์ trainingํ๊ธฐ ์ ๋ง์ง๋ง ๋จ๊ณ๋ก, ๋ชจ๋ธ์ ์ปดํ์ผ ํ๋ ๋จ๊ณ์ด๋ค.
์ฌ๊ธฐ์๋ ๋ชจ๋ธ์ด ํ๋ จ ์ค ์ผ๋ง๋ ์ ์ํ๋๋์ง ํ์ธํ๊ธฐ ์ํด์ ๋ชจ๋ธ์ ์ฌ์ฉํ loss function์ ์ง์ ํ๋ค.
loss function์ด๋ ๊ฐ๋จํ๊ฒ ์๊ธฐํ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ํ ๋๋ก ์ฐ์ถํ ๋ชจ๋ธ์ ์์ธก ๊ฐ๊ณผ ์ค์ ๊ฐ๊ณผ์ ์ฐจ์ด๋ฅผ ํํํ๋ ์งํ์ด๋ค.
loss function์ ํจ์๊ฐ์ด ์ต์ํ ๋๋๋ก ํ๋ weight์ bias๋ฅผ ์ฐพ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค. โ ํ์ต
๋ํ ๋ชจ๋ธ์ด ํ๋ จํ๋ ๋์ ์ ํ์ฑ์ ์ถ์ ํ๊ณ ์ ํ๋ค๊ณ ๋ช ์ํ๋ค.
```python
model.compile(loss='categorical_crossentrophy', metrics=['accuracy'])
```
7. ๋ชจ๋ธ ํ๋ จํ๊ธฐ
์ด์ ํ๋ จ ๋ฐ ๊ฒ์ฆ ๋ฐ์ดํฐ์ ๋ชจ๋ธ์ ์ค๋นํ์ผ๋, ํ๋ จ ๋ฐ์ดํฐ๋ก ๋ชจ๋ธ์ ํ๋ คํ๊ณ ๊ฒ์ฆ๋ฐ์ดํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ๋ฉด ๋๋ค.
|
|
-
epochs โ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต์ ๊ฑฐ์น๋ ํ์๋ฅผ ์๋ฏธํ๋ค. epochs ๊ฐ์ด ๋๋ฌด ์๋ค๋ฉด underfitting, ๋๋ฌด ํฌ๋ค๋ฉด overfitting์ด ๋ฐ์ํ ํ๋ฅ ์ด ๋๋ค.
-
verbose โ ํ์ต์์ ์งํ์ํฉ์ ์๋ ค์ฃผ๋ argument์ด๋ค.
( 0 = slient, 1 = progress bar, 2 = on line per epoch)
-
validation_data โ ๊ฒ์ฆ ๋ฐ์ดํฐ
-
tf.model.get_weights()๋ก ํด๋น ๋ชจ๋ธ์ W(๊ธฐ์ธ๊ธฐ) ์ bias(์ ํธ) ๊ฐ์ ๊ตฌํ ์ ์๋ค.
verbose๋ฅผ ์ฌ์ฉํ๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
Epoch 1/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1933 - accuracy: 0.9426 - val_loss: 0.1238 - val_accuracy: 0.9661
Epoch 2/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1017 - accuracy: 0.9736 - val_loss: 0.1087 - val_accuracy: 0.9745
Epoch 3/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0803 - accuracy: 0.9801 - val_loss: 0.1226 - val_accuracy: 0.9764
Epoch 4/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0692 - accuracy: 0.9830 - val_loss: 0.1370 - val_accuracy: 0.9776
Epoch 5/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0640 - accuracy: 0.9866 - val_loss: 0.1534 - val_accuracy: 0.9753
compile ์์ merics=[‘accuracy’] ์ถ์ ์ต์ ์ ๋ฃ์๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ด accuracy๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
val_๋ ๊ฒ์ฆ๋ฐ์ดํฐ์ ๋ํ ์ถ๋ ฅ ๊ฐ์ด๋ค.
Test
optimizer ์ฌ์ฉ
epochs์ ์ ๊ฒ ์ค๋ loss๊ฐ ๋ฎ์ : 15
๋ง์ด ์ฌ์ฉํ๋ optimizer๋ Adm, RMSProp์ด๋ผ๊ณ ํ๋ค. ํ์ง๋ง ์๋์์ ์์๋ ๋ค๋ฅธ optimizer๋ฅผ ์ฌ์ฉํด๋ ๋ก์ค์จ์ด ๋์. (๊ทธ๋๋ ์์ฐ๋ ๊ฒ๋ณด๋ค๋ ํจ์จ์ด ํจ์ฌ ์๋์จ๋ค. Adam๋ 3500์ ๋์ ์ต์ ๋ก์ค๋ฅผ ์ฐ์)
์ฆ, ํด๋น ์์ ์์๋ SGD๊ฐ ์ต์ ํ๋์ด์๋ ๊ฒ ๊ฐ์.
SADAdam๊ณผ RMSProp๋ ์ด๋์ ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ง๋ ์ตํฐ๋ง์ด์ ์ธ๋ฐ ํ๋จ์ ์์ ๊ฐ ๋๋ฌด ๊ฐ๋จํด์ ํจ์จ์ด ์ ์๋์ฌ์๋ ์๋ค๊ณ ํ๋ค.
|
|
optimizer ์ค์ ์์ด ๊ตฌํ๋ ๋ฐฉ๋ฒ
epochs์ 10000์ ์คฌ์์๋ sgd๋ฅผ ์ฌ์ฉํ ๋๋ณด๋ค loss๊ฐ ๋์(20~25)
|
|
polyfit์ ์ฌ์ฉํด์ ๊ตฌํ๋ ๋ฐฉ๋ฒ
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ loss : 14
|
|