반응형
250x250
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
- 머신러닝
- 딥러닝
- 태블로
- 컴퓨터비전
- fit
- 데이터시각화
- nlp
- dl
- 데이터분석
- Computer Vision
- DACON
- tableau
- product
- 자연어처리
- 그로스해킹
- 시각화
- pmf
- 모델링
- 인공지능
- productmarketfit
- Market
- omtm
- OKR
- 파인튜닝
- ERD
- 언어지능딥러닝
- 데이콘
- 데이터모델링
Archives
- Today
- Total
블로그
[CV] 시각지능 딥러닝 #3 Transfer Learning 전이 학습 본문
반응형
Review
- Feature Representation : 연결된 것으로부터 새로운 feature들을 만듦 (재표현)
- Dense : 고수준 피처 개수 조절
- Node : 피처 개수 조절
- Image Data Augmentation
- 현실 세계에서는 가지고 있는 데이터가 매우 부족함
- 갖고있는 적은 데이터라도 최대한 활용하기 위해 augmentation 사용
Transfer Learning
- Augmentation의 한계
- 원본과 확연히 다른 새로운 특징은 만들어낼 수 없음
- 애초에 양과 질 모두 충족하는 적절한 데이터여야 학습에 도움이 됨
- 개인이 수집 불가능할 정도의 데이터 + 성능이 훌륭한 모델 구조와 가중치를 가진 모델을 가져와 사용
- Pretrained Model : 가져온 그 상태 그대로 사용
- Fine Tuning : 잘 만들어진 모델을 우리 문제에 맞게 구조를 변경하거나 재학습시키는 것
- 보유하고 있는 데이터가 부족한 경우
- Frozen : 가져온 모델의 가중치를 새로 업데이트하지 않고 가지고 있는 가중치를 그대로 사용
- Fine Tuning 전략
- 데이터 多, 문제와 사전 학습 모델이 유사 => 모델 뒷부분 위주로 재학습!
- 데이터 多, 문제와 사전 학습 모델이 상이 => 모델 전체 재학습!
- 데이터 少, 문제와 사전 학습 모델이 유사 => 모델 뒷부분 중의 뒷부분만 재학습!
- 데이터 少, 문제와 사전 학습 모델이 상이 => 모델 뒷부분 위주로 재학습!
- ResNet50 모델 Fine Tuning 실습
from keras.applications.resnet50 import ResNet50
from keras.backend import clear_session
from keras.layers import Dense
from keras.layers import GlobalAveragePooling2D
clear_session()
base_model = ResNet50(weights='imagenet', # ImageNet 데이터를 기반으로 미리 학습된 가중치 불러오기
include_top=False, # ResNet 모델의 아웃풋 레이어는 제외하고 불러오기
input_shape= (32,32,3), # 입력 데이터의 형태
pooling='avg' # Global Average Pooling 2D
)
new_output = Dense(10, # class 10개
activation = 'softmax')(base_model.output)
model = keras.models.Model(base_model.inputs, new_output)
model.summary()
# 모델의 가중치를 그대로 사용할 레이어와 추가 학습할 레이어를 결정
for layer in model.layers[:-1] :
layer.trainable = False
model.compile(loss='sparse_categorical_crossentropy', metrics=['accuracy'],
optimizer=keras.optimizers.Adam(learning_rate=0.001) )
from keras.callbacks import EarlyStopping, ReduceLROnPlateau
# 검증 손실이 개선되지 않을 때 학습률을 동적으로 조정하여 학습을 최적화하는 콜백 함수
lr_reduction = ReduceLROnPlateau(monitor='val_loss',
patience=4,
verbose=1,
factor=0.5,
min_lr=0.000001)
es = EarlyStopping(monitor='val_loss',
min_delta=0, # 개선되고 있다고 판단하기 위한 최소 변화량
patience=2, # 개선 없는 epoch 얼마나 기다려 줄거야
verbose=1,
restore_best_weights=True)
hist = model.fit(train_x, train_y,
validation_split=0.2,
epochs=1000, verbose=1,
callbacks=[es, lr_reduction]
)
728x90
반응형
'공부 > DL' 카테고리의 다른 글
[CV] 시각지능 딥러닝 #5 YOLO 실습 (0) | 2024.04.08 |
---|---|
[CV] 시각지능 딥러닝 #4 Object Detection 객체 탐지 (0) | 2024.04.04 |
[CV] 시각지능 딥러닝 #2 Image Data Augmentation 이미지 데이터 증강 (0) | 2024.04.02 |
[CV] 시각지능 딥러닝 #1 CNN (Convolutional Neural Networks) (0) | 2024.04.02 |
[딥러닝] #4 딥러닝 기반 시계열 모델링 (2) | 2024.03.28 |