프로젝트_랜드마크 - 15~16일차
loss가 nan으로 출력됨
-
Efficientnet 모델을 학습시키고 잠들었었으나, loss가 nan으로 나오는것을 미처 확인하지 못했고 그로인해 모델의 성능이 바닥을 찍었다.
-
learning rate 감소, 입력 데이터 수정 등 찾아본 모든 방법을 수행했으나 해소되지 않음.
-
또한, 심심하면 out of memory 에러가 발생해 프로그램이 뻗어버리는 사태가 발생함.
-
결국 Github에서 전이학습에 성공한 분의 코드를 참고하여 데이터셋 생성 및 전이학습 관련 코드를 재작성했다.
코드 비교 및 내 문제점 탐색
-
데이터셋 생성은 image_dataset_from_directory를 통해 생성.
-
data augmentation의 경우, Sequential을 상속받아 데이터 증강 레이어를 따로 생성하고, 거기에 input을 통과시키는 방식을 사용했다.
-
strategy의 사용
- tf.distribute.MirroredStrategy()라는 코드를 사용
- 해당 코드를 사용하자, Garbage Collection이 작동하는것을 확인할수 있었다.
- gc의 개념은 분명 알고 있었지만 코드상으로 효과를 체험해본것은 이번이 처음이었는데, 메모리 사용량이 엄청나게 줄어들어 같은 크기의 데이터셋도 무리없이 학습시키는것이 가능했다.