본문 바로가기

분류 전체보기

(131)
[16] Hyperparameter Tuning 성능 개선 방법 모델 변경(성능이 좋은 모델로...) 데이터 변경(추가, 오류 확인, 증량) 하이퍼 파라미터 튜닝 Hyperparameter Tuning 모델 스스로 학습하지 않는 값으로 사람이 지정 learning rate, 모델의 크기, optimizer 등 단, 요즘 이 하이퍼파라미터도 NAS(nueral architecture search)나 AutoML 등을 활용하여 선택 가능.. 하이퍼 파라미터에 의해서 값이 크게 좌우 될 때도 있음(요즘은 그닥 없음) 마지막 0.01을 쥐어짜야 할 때 도전 grid search 가장 기본적인 방법 - grid vs random grid search : 특정 파라미터에 대해 몇 가지 탐색할 값들을 정해놓고 차례대로 확인 random search : 특정 범위 ..
[15] Multi-GPU 학습 Multi-GPU GPU vs Node : Node를 system이라고 부르며 이 경우 1대의 컴퓨터로 보면 된다. Single Node Single GPU : 1대의 컴퓨터에 1개의 GPU Single Node Multi GPU : 1개의 컴퓨터에 여러 개의 GPU Multi Node Multi GPU : 서버실에 달려있는 GPU Model Parallel 다중 GPU에 학습을 분산하는 두 가지 방법 모델 나누기 / 데이터 나누기 모델을 나누는 것은 생각보다 예전부터 사용(alexnet) 모델의 병목, 파이프라인의 어려움 등으로 인해 모델 병렬화는 고난이도 과제 Model parallel(e.g. AlexNet) 모델 병렬화는 다음과 같이 있는데, 첫번째 케이스는 하나의 GPU가 작업이 끝나야 다른 G..
[14] monitoring tool - wandb weight & biases 머신러닝 실험을 원활히 지원하기 위한 상용도구 협업, code versioning, 실험 결과 기록 등 제공 MLOps의 대표적인 툴 loss, acc log 뿐아니라 gqu, cqu, network traffic 체크 가능 사용법 https://wandb.ai/ Weights & Biases – Developer tools for ML WandB is a central dashboard to keep track of your hyperparameters, system metrics, and predictions so you can compare models live, and share your findings. wandb.ai 로그인 하고 API키 할당 받고 새로운 프로젝트..
[13] Monitoring tool - Tensorboard Tensorboard TensorFlow의 프로젝트로 만들어진 시각화 도구 학습 그래프, metric, 학습 결과의 시각화 지원 PyTorch도 연결 가능 → DL 시각화 핵심 도구 Parameters scalar : metric 등 상수 값의 연속(epoch)을 표시 graph : 모델의 computational graph 표시 histogram : weight 등 값의 분포를 표현 Image : 예측 값과 실제 값을 비교 표시 mesh : 3d 형태의 데이터를 표현하는 도구 코드 작업 import os import numpy as np from torch.utils.tensorboard import SummaryWriter logs_base_dir = "logs" os.makedirs(logs_bas..
[12] 전이학습 tansfer learning 모델 저장하고 불러오기 model.save() 학습의 결과를 저장하기 위한 함수 모델 형태(architecture)와 파라메터를 저장 모델 학습 중간 과정의 저장을 통해 최선의 결과모델을 선택 만들어진 모델을 외부 연구자와 공유하여 학습 재연성 향상 # 모델 저장 폴더 만들기 MODEL_PATH ="saved" if not os.path.exists(MODEL_PATH): os.makedirs(MODEL_PATH) # 모델 파라미터만 저장 torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt")) # 같은 모델 형태에서 파라미터만 load new_model = TheModelClass() new_model.load_state_dict(tor..
구글드라이브 다운 gdown과 압축풀기 보통 대회에 참여할 때 구글 드라이브 데이터를 로컬에 가져와 하는경우 gdown 사용 가능 import gdown google_path = '다운링크' output_name = 'data.zip' gdown.download(google_path,output_name,quiet=False)주의할 점 : 구글드라이브에서 다운로드 링크를 넣을 때 이 화면일 때 링크가 아닌 이 화면일 때 링크여야 한다.. unzip 하는데 파일오류가 나와서 이 문제인지 모르고 1시간을 날렸습니다.. 파일 압축해제하기 import zipfile with zipfile.ZipFile("./data.zip") as z: z.extractall()
[11] image transform PIL vs opencv image 관련 작업을 할 때 이미지를 어떻게 불러오는지는 엄청 중요하다. transform관련하여 torchvision이나 Albumentations 를 주로 이용하고 있는데 속도나 편함 측면에서 Albumentations 를 자주 쓰는 편이다. Albumentations 라이브러리는 cv2로 읽고 RGB로 변환하여 input 하는 것을 권장한다. PIL RGB로 이미지 읽어옴 array화 필요 cv2 BGR로 이미지 읽어옴 Video capture와 같은 기능 지원이 잘 되어있음 PIL에는 없는 다양한 함수들 지원(PIL에 있는 거의 모든 기능이 OpenCV에 존재) cv2 함수의 입력으로 numpy array를 넣어서 바로 사용가능(numpy array와의 호환성이 좋음) ..
[10] Dataloader 의 기본요소 Dataloader는 데이터셋을 미니 배치 단위로 제공해주는 역할 DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None) . Datalaoder에는 Dataset 인스턴스가 들어감 a = iter(DataLoader(dataset_iris)) # 이렇게 정의해 두고 next(a) # 를 계속 실행하면 다음 batch 가 나옴. 출력 잘 나오는지 파악할 때 확인 가능 # [tensor([[5.1000, 3.5000, 1.4000, 0.200..
[09] Dataset Dataset 관련 모듈 알아보기 torch.utils.data : 파이토치 모델을 학습시키기 위한 데이터셋의 표준을 `torch.utils.data.Dataset 에 정의 torchvision.dataset : 이미지 데이터셋 모음 torchtext.dataset : 텍스트 데이터셋 모음 torchvision.transforms : 이미지 트랜스폼 torchvision.utils : 이미지 데이터를 저장하고 시각화를 위한 도구가 들어있는 모듈 Dataset의 기본 요소 from torch.utils.data import Dataset class CustomDataset(Dataset): def __init__(self,): pass def __len__(self): pass def __getitem__..
[python] 다익스트라 최단 경로 알고리즘 / 플로이드 워셜 알고리즘 다익스트라 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. 기본적으로 그리디 알고리즘으로 분류됨 -> 매번 '가장 비용이 적은 노드'를 선택해서 임의의 과정 반복 알고리즘의 원리 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 위 과정에서 3과 4번을 반복한다. 그림으로 이해하는 다익스트라 알고리즘 출처 : https://www.youtube.com/watch?v=F-tkqjUiik0 방법 1. 구현하기 쉽지만 느리게 동작하는 코드 시간 복잡도는 O(V..