반응형
컨브넷 정의와 컨브넷이 컴퓨터 비전 관련 작업에 잘 맛는 이유에 대해 이론적 배경을 알아봅시다.
컨브넷이 (image_height, image_width, image_channels) 크기의 입력 텐서를 사용한다는 점이 중요합니다(배치 차원은 포함하지 않습니다). 이 예제에서는 MNIST 이미지 포맷인 (28, 28, 1) 크기의 입력을 처리하도록 컨브넷을 설정해야 합니다. 이 때문에 첫 번째 층의 매개변수로 input_shape=(28, 28, 1)을 전달합니다.
from keras import layers
from keras import models
model = models.Sequential()
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.summary()
Conv2D와 MaxPooling2D 층의 출력은 (height, width, channels) 크기의 3D 텐서입니다. 높이와 넓이 차원은 네트워크가 깊어질수록 작아지는 경향이 있습니다. 채널의 수는 Conv2D 층에 전달된 첫 번째 매개변수에 의해 조절됩니다(32개 또는 64개).
from keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
기본적인 컨브넷은 99.2%의 테스트 정확도를 얻었습니다. 왜 이렇게 좋은지에 대해 알아보겠습니다
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
반응형
'Lecture AI > 5장.컴퓨터 비전을 위한 딥러닝' 카테고리의 다른 글
5. 컨브넷의 학습 시각화하기 (0) | 2021.08.18 |
---|---|
4.사전 훈련된 컨브넷 사용하기 (0) | 2021.08.18 |
3. 소규모 데이터셋에서 밑바닥부터 컨브넷을 훈련하기 (0) | 2021.08.11 |
2. 합성곱 연산의 방법 (0) | 2021.08.07 |