사전훈련된 컨브넷 사용하기

구조: [훈련된 합성곱 기반 층 -> 훈련된 분류기] 라고 하면,

1. 훈련된 합성곱 기반 층으로부터 특성을 추출하여 새로운 분류기를 만들어 연결하여 훈련시킨다.

훈련시키기 빠르다는 장점이 있지만, end-to-end 컴파일을 하지 않는 이상, 데이터 증식을 사용하지 못하기 때문에 과대적합될 수 있다.

conv_base.trainable=False

위와 같은 코드를 통해 합성곱 기반층 전체를 freezing 시켜줘야 한다.

2. 훈련된 합성곱 기반 층의 일부층을 freezing을 해제하고 모델에 새로 추가한 층 또는 새로운 분류기와 함께 훈련시킨다.

기존의 층들과 새로 추가한 층들을 처음부터 한번에 훈련 시킨다면, 훈련되는 동안 너무 큰 오차가 신호가 기존 네트워크에 전파되어 사전학습된 표현들을 망가뜨릴 가능성이 크다.
따라서 다음과 같은 순서로 훈련시켜야 한다.


1. 기존의 층들 위에 새로운 층들을 추가한다.
2. 기존의 층들을 freezing 시킨 후에 새로운 층들을 훈련시킨다.
3. 기존의 층들의 freezing을 해제한, 기존의 층들과 새로운 층들을 함께 훈련시킨다.


_[케라스 창시자에게 배우는 딥러닝]을 공부하면서 정리한 글입니다._
profile
딥러닝 공부중 🦴

0개의 댓글