728x90
반응형
1. Dropout과 Batch Normalization 비교
Dropout | Batch Normalization | |||
학습 | 테스트 | 학습 | 테스트 | |
loss | 1.0370 | 1.0452 | 0.8025 | 0.8858 |
Accuracy | 0.6381 | 0.6484 | 0.7235 | 0.7126 |
지난 글에서 작성했던 코드는 BatchNormalization의 결과이다. 비교를 위해 Dropout의 결과도 확인해야한다. 그러므로 코드 중 일부를 다음과 같이 변경해준다. 주석처리 해놓았던 Dropout을 주석 '#'을 지워주고 코드에 합류시킨다. 그 후 BatchNormalization을 주석처리 해놓는다.
# 층을 차례대로 쌓아 tf.keras.Sequential 모델을 만든다..
# 훈련에 사용할 옵티마이저(optimizer)와 손실 함수를 선택:
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(32, (3, 3), activation='relu', padding='valid', strides=(1,1), input_shape=(32, 32, 3)))
# model.add(tf.keras.layers.BatchNormalization()) # Dropout보다 정확도가 더 높다.
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu'))
# model.add(tf.keras.layers.BatchNormalization()) # Dropout보다 정확도가 더 높다.
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
model.add(tf.keras.layers.Conv2D(128, (3, 3), activation='relu'))
# model.add(tf.keras.layers.BatchNormalization()) # Dropout보다 정확도가 더 높다.
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
1.1 Dropout의 학습결과
Epoch 1/5
1563/1563 [==============================] - 7s 4ms/step - loss: 1.6064 - accuracy: 0.4111
Epoch 2/5
1563/1563 [==============================] - 8s 5ms/step - loss: 1.2739 - accuracy: 0.5448
Epoch 3/5
1563/1563 [==============================] - 6s 4ms/step - loss: 1.1327 - accuracy: 0.5981
Epoch 4/5
1563/1563 [==============================] - 7s 4ms/step - loss: 1.0558 - accuracy: 0.6314
Epoch 5/5
1563/1563 [==============================] - 7s 4ms/step - loss: 0.9855 - accuracy: 0.6575
1.2 Dropout의 테스트 결과
=====test result=====
313/313 [==============================] - 1s 2ms/step
313/313 - 1s - loss: 1.0002 - accuracy: 0.6691 - 833ms/epoch - 3ms/step
Accuracy: 0.6691

2. validation 사용 결과
history = model.fit(train_images, train_labels, epochs=5, batch_size=32, validation_split=0.2)
validation loss, accruacy를 통해 검증 데이터를 알 수 있다. 검증은 학습 과정에서 각 에폭마다 학습데이터 전체수의 일정 수를 유효성 검증 셋으로 따로 떼어두고 나머지 학습데이터의 학습된 네트워크를 유효성 검증 셋 테스트를 해 보는 과정을 의미한다. 검증 데이터를 사용하는 이유는 학습 데이터가 부족할 경우 모델이 과적합에 빠지는 것을 막고 모델의 견고성을 높이기 위함이다.
728x90
반응형
'🧠 AI' 카테고리의 다른 글
[인공지능] 모델 구성 코드 및 분석(1) (0) | 2022.11.29 |
---|