기본적인 CNN 모델을 만들기 위해 필요한 개념들을 정리하였다. 2D Convolution Convolution은 합성곱 연산이다. CNN 모델에서 이미지 특징을 추출하는 과정이 바로 합성곱 연산이다. Input: 입력은 (h, w) 크기를 가지는 2차원 이미지. kernel: 이미지의 특징을 추출하기 위해 사용되는 필터. Feature map: Kernel을 거쳐 연산된 결과로, 추출된 이미지의 특징을 가짐. 2D Convolution 연산은 아래와 같이 수행된다. ("다음 단계" 클릭) HTML 삽입 미리보기할 수 없는 소스 Kernel은 계속 순회하며 이미지와 합성곱 연산을 수행한다. 그리고 그 결과로 추출된 값이 Feature map이다. 따라서, Feature map은 이미지로부터 추출된 특징이..
실행환경: Colab Pro (Python 3.7.15) 코랩은 90분 이상 동작이 없으면 런타임이 끊어질 수 있기 때문에 console을 열어 아래 스크립트를 실행한다. function connectRuntime(){ button = document.querySelector("body > div.notebook-vertical > colab-status-bar").shadowRoot.querySelector("button"); button.click(); console.log(" --Connected"); } setInterval(connectRuntime, 10 * 60 * 1000); 주기적으로 연결 버튼을 클릭해 코랩이 종료되지 않도록 한다. 준비 !pip install transformers !..
EarlyStopping은 특정 평가 지표가 증가·감소하는 현상을 보였을 때, 모델이 over-fitting 되었다고 판단하여 학습을 중단하는 것을 뜻한다. tensorflow나 transformers에서는 자체적으로 EarlyStopping을 지원하지만 Pytorch의 경우 직접 구현한 객체를 사용해야 한다. EarlyStopping 적용 예시 HTML 삽입 미리보기할 수 없는 소스 Pytorch로 구현 import torch import numpy as np class EarlyStopping(object): def __init__(self, patience=2, save_path="model.pth"): self._min_loss = np.inf self._patience = patience sel..
RuntimeError: CUDA out of memory. 메모리 용량이 부족해 발생하는 문제이기 때문에 단순히 batch size를 줄이는 등 공간을 확보해 해결할 수 있다. 또 의도적으로 GC를 실행해 메모리를 확보하거나 cache를 비워줄 수 있다. import gc import torch gc.collect() torch.cuda.empty_cache() 하지만 batch 크기를 줄이게 되면 성능이 떨어지는 문제가 발생할 수 있다. 따라서 큰 batch 크기를 사용해 학습하는 것과 동일한 효과를 내는 방법이 존재한다. Gradient Accumulation 기존의 학습은 하나의 mini-batch를 거친 후 optimizer를 통해 학습을 진행한다. 하지만 gradient accumulation..
Hugging Face에서 제공하는 transformers를 이용하면, 모델의 구조를 전부 설계할 필요 없이 편리하게 사전 학습된 모델을 사용할 수 있다. * 아래에 작성한 코드는 Jupyter(Colab) 환경에서 실행한다는 전제로 작성하였다. 참고자료: https://huggingface.co/docs/transformers/index 🤗 Transformers Reinforcement learning models huggingface.co 설치 !pip install transformers Pipeline pipeline은 해결하고자 하는 문제(task)에 맞는 사전학습 모델을 제공한다. task의 분류는 pipeline에서 확인할 수 있다. 예를 들어, NER(개체명 인식 문제)을 통해 이름과 고..