Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 프로그래머스
- 소프트웨어
- 운영체제
- 컴퓨터구조론 5판
- 99일지
- 스파르타내일배움캠프TIL
- 스파르타내일배움캠프WIL
- Python
- til
- Flutter
- wil
- Spring
- MySQL
- java
- 스파르타내일배움캠프
- 코딩테스트
- 자바
- 컴퓨터개론
- 항해
- 개발자블로그
- 개인공부
- AWS
- 스파르타코딩클럽
- 백준
- 99클럽
- 중심사회
- 내일배움캠프
- 개발자스터디
- 부트캠프
- 국비
Archives
- Today
- Total
컴공생의 발자취
[인공지능] 모델 구성 코드 및 분석(2) 본문
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 |
---|