๋ฐ์ํ
๋ด๊ฐ ํท๊ฐ๋ ค์ ์ ๋ฆฌ!
๋ชจ๋ธ ํ๋๋ฅผ ์์๋ก ๋ค์ด์ ๋งค๊ฐ๋ณ์๋ฅผ ์ค๋ช ํด๋ณด๊ฒ ๋ค.
1. ๋ชจ๋ธ ์์ฑ
model = models.Sequential()
- keras์ Sequential ๋ชจ๋ธ ์ฌ์ฉ
- ๊ณ์ธต์ ์ ํ์ผ๋ก ์์ ๋ชจ๋ธ์ ์๋ฏธ
2. ์ธต (Layer) ์ถ๊ฐ
๋ชจ๋ธ ๊ตฌ์ฑ
INPUT → ์ฝ๋ณผ๋ฃจ์ ๋ ์ด์ด (Conv2D) → ReLU ํจ์ → ๋งฅ์ค ํ๋ง ๋ ์ด์ด(MaxPooling2D) → ์ฝ๋ณผ๋ฃจ์ ๋ ์ด์ด (Conv2D) → ReLU ํจ์ → ๋งฅ์ค ํ๋ง ๋ ์ด์ด(MaxPooling2D) → ์ฝ๋ณผ๋ฃจ์ ๋ ์ด์ด (Conv2D) → ์์ ์ฐ๊ฒฐ๊ณ์ธต (Dense) → softmaxํจ์ → OUTPUT |
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28,28,1)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.summary()
- model.add ํจ์๋ฅผ ์ด์ฉํด์ ํ ์ธต์ฉ ์์๊ฐ๋ค.
- Conv2D : ์ฝ๋ณผ๋ฃจ์
๋ ์ด์ด
- ํ๋ผ๋ฏธํฐ
- Conv2D(filter=32, kernel_size = (3,3), activation = 'relu', input_shape = (28,28,1))
- ํ๋ผ๋ฏธํฐ
- MaxPooling2D : ๋งฅ์ค ํ๋ง ๋ ์ด์ด
- ํ๋ผ๋ฏธํฐ
- MaxPooling2D((2,2))
- strides ๊ฐ (2,2) ๋ผ๋ ๋ป
- ํ๋ผ๋ฏธํฐ
- Flatten()
- Dense์ธต์ ์ ๋ ฅ๋๋ ค๋ฉด 1์ฐจ์์ ๋ฐฐ์ด์ด์ด์ผ ํ๊ธฐ๋๋ฌธ์ Flatten()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ 1์ฐจ์๋ฐฐ์ด๋ก ๋ง๋ค์ด์ฃผ๋๊ฒ
- Dense : ์์ ์ฐ๊ฒฐ NN ๋ ์ด์ด
- ๋ชจ๋ธ์ ์์ฑํ๋ ค๋ฉด ๋ง์ง๋ง ํฉ์ฑ๊ณฑ์ธต์ ํฌ๊ธฐ (3,3,64) ๋ฅผ ํ๋ ์ด์์ Dense์ธต์ ์ฃผ์ ํด์ ๋ถ๋ฅ ์ํ ํ์
- Dense(64, activation = 'relu')
- ์ถ๋ ฅ๋ ธ๋ ๊ฐ์ 64๊ฐ, ํ์ฑํํจ์ relu ์ฌ์ฉ
- Dense(10, activation = 'softmax')
- ๋ง์ง๋ง ์ถ๋ ฅ ๋ ธ๋๋ฅผ 10๊ฐ๋ก ์ง์ ํ๊ณ , softmax ํจ์๋ฅผ ์ต์ข ํ์ฑํ ํจ์๋ก ์ฌ์ฉ
3. model.fit ํจ์ ์ ์ฉ
model.fit(X_train, Y_train,
batch_size = batch_size,
nb_epoch = nb_epoch,
verbose = 2,
validation_data = (X_test, Y_test))
- model.fit ํ๋ผ๋ฏธํฐ
- x : ์ ๋ ฅ๋ฐ์ดํฐ
- y : ๋ผ๋ฒจ (ํ๊ฒ๊ฐ)
- batch_size : ๋ฐฐ์น ํฌ๊ธฐ
- nb_epoch : ํ์ต epoch ํ์
- verbose : ๋ก๊น
์ค์
- 0: ์์, 1: ํ๋ก๊ทธ๋์ค๋ฐ, 2: epoch๋น
- valication_data: (X,Y) ์ ๊ฒ์ฆ๋ฐ์ดํฐ
- shuffle : ๊ฐ epoch๋ง๋ค ์ํ์ ์์์ง ์ฌ๋ถ
4. model.evaluate ํจ์
model.evaluate(X_test,Y_test, verbose = 0)
- model.evaluate ํ๋ผ๋ฏธํฐ
- x,y : ๊ฒ์ฆ๋ฐ์ดํฐ ์ ๋ ฅ
- batch_size : ๋ฐฐ์นํฌ๊ธฐ
- verbose : ์ถ๋ ฅ๋ชจ๋ (0 or 1)
- model.evaluate ๋ฆฌํด๊ฐ (๊ฒฐ๊ณผ)
- ๋ชจ๋ธ metrics๊ฐ ์๋ค๋ฉด : loss๊ฐ์ผ๋ก ์ถ๋ ฅ
- ๋ชจ๋ธ metrics๊ฐ ์๋ค๋ฉด : ๋ชฉ๋ก์ผ๋ก ์ถ๋ ฅ
๋ฐ์ํ