본문 바로가기

Pre-training2

[논문 구현] ImageNet-21k 데이터셋 pre-training 방법 ViT는 트랜스포머의 일종이다.트랜스포머의 핵심은 초거대 파라미터를 운용하는 것인데,이를 위해 필수적인 것이 바로 pre-training이다. ViT는 기본적으로 ImageNet-21k에서 pre-training 하고,ImageNet-1k(2012)에서 fine-tuning한다.(이 포스팅에서는 ImageNet-1k가 아니라 21k를 찾는 법이니 혼동하지 않길 바랍니다.) 이런건 어디서 알 수 있냐면 라이브러리 깃허브를 참고하면 된다.https://github.com/google-research/vision_transformer 가끔... 아주 가끔... 이 pre-training을 직접 해야하는 괴랄한 상황이 생긴다.그래서 ImageNet-21k를 다운받아야 하는 곤란한 상황이 .. 2023. 6. 8.
Transformer 학습 안될때 오류 확인하는 방법 Transformer는 학습할 때 오래걸린다. 그리고 너무 복잡해서 열받을 때가 많다. 학습 과정을 보는 방법으로 하나를 제안하려고 한다. 보통 학습이 안되는 이유 중에 가장 빈번한 것은 gradient 때문이다. gradient vanishing, gradient exploding 두개가 제일 문제다. 이걸 확인하는 방법은 생각보다 간단하다. forward 도중에 텐서의 크기(range)를 뽑아보면 된다. print(torch.max(x) - torch.min(x)) 이게 끝이다. 예를들어 설명해주겠다. 첫번째 모델은 hugging face의 라이브러리로 만든 ViT다. 즉 군더더기 없는 코드이고, 학습도 잘된다. learning rate가 0.001인 조건에서 텐서의 크기는 4정도 된다. 즉 back.. 2023. 5. 8.