일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- FineGrained
- Depth estimation
- clean code
- algorithm
- Torch
- cs
- computervision
- math
- Front
- CV
- FGVC
- SSL
- 자료구조
- GAN
- 딥러닝
- PRML
- REACT
- nerf
- 3d
- Vision
- ML
- web
- Python
- Meta Learning
- pytorch
- dl
- 머신러닝
- 알고리즘
- nlp
- classification
- Today
- Total
목록dl (137)
KalelPark's LAB
Gradient Clipping이란? 주로 RNN계열에서 gradient vanishing이나 gradient exploding이 많이 발생하는데, gradient exploding을 방지하여, 학습의 안정화를 도모하기 위해 사용하는 방법입니다. Gradient Clipping과 L2_Norm Clipping이란, gradient가 일정 threshold를 넘어가면, clipping을 해줍니다. clipping은 gradient의 L2 norm으로 나눠주는 방식입니다. Clipping이 없으면, gradient가 너무 뛰어서, global minimum에 도달하지 않고, 너무 엉뚱한 방향으로 향하게 되지만, Clipping을 해주게 되면, gradient vector가 방향은 유지하고, 적은 값의 이동을..
딥러닝을 돌리다보면, Memory가 부족하면, CUDA Out Of Memory를 자주 만나게 됩니다. GPU 메모리가 부족이 많이 발생하였을 때, 메모리 부족이 일어나는 이유이기도 때문입니다. batch size가 학습에 큰 영향을 미치지 않는다면 상관이 없지만, batch size는 학습에 큰 영향을 줍니다. batch size가 큰 배치사이즈를 사용하는 이유는 학습시에 정보의 노이즈를 제거하고 더 나은 gradient decsent를 수행할수 있습니다. Explained of Gradient Accumulate [CODE] model.zero_grad() # Reset gradients tensors for i, (inputs, labels) in enumerate(training_set): pre..
MixUp 구현. import torch import numpy as np import matplotlib.pyplot as plt import torchvision import torchvision.transforms as transforms transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), # transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ]) batch_size = 4 trainset = torchvision.datasets.STL10(root='./temp', split = "train", download=True, transform=tran..
Abstract Text의 Unlabeled 데이터는 풍부함. 이에 반하여, 데이터는 풍부하지 못하고, 빈약한 상황임. 이에 따라, 적절한 작업을 수행하기 어려 움. 그러므로, masking을 활용한 학습 방법을 제안 (상당한 성능 개선이 있음.) Masked AutoEncoder와 다르게, Image의 경우 Enocder를 사용하지만, NLP의 경우, Decoder를 사용합니다. Introduction Supervised fine-tunning과 unsupervised pre-training의 결합을 활용하여, language understanding tasks로 접근합니다. Two-stage의 절차를 따라 학습을 진행합니다. 첫 번째는 Unlabeled data를 학습하고, 이후에는 Supervise..
파이썬 프로그래밍의 상당 부분은 데이터를 포함하는 클래스를 정의하고, 클래스에 속하는 객체들이 서로 상호작용하는 방법을 기술하는 것으로 여겨집니다. 모든 파이썬 클래스는 함수와 attribute를 함께 캡슐화하는 일종의 컨테이너라고 할 수 있습니다. 파이썬은 데이터를 관리할 때 사용할 수 있도록, 리스트, 튜플, 집합, 딕셔너리 등에서 활용됩니다. * FrequencyList를 리스트(list)의 하위 클래스로 만듦으로써, 리스트가 제공하는 모든 표준 함수를 FrequencyList에서도 사용할 수 있습니다. class FrequencyList(list): def __init__(self, members): super().__init__(members) def frequency(self): counts ..
BatchSize에 따른 loss의 변화율 - batch size의 크기에 따라 학습되는 과정은 달라질 수 있습니다. batch size가 작으면, 순간 loss가 커져서 convex hole에 위치한 곳에서 급격하게 자리를 변경할 우려가 있습니다. - batchsize가 크면, 여러 데이터를 평균으로 loss가 구해지기 때문에 훨씬 robustness 해집니다. SSL 시, Batchsize가 커야하는 이유가 아래와 동일합니다. 여러 데이터를 평균으로 backpropagation을 해야 성능이 올라갑니다. 또한 우측의 표를 보면, LR에 작으면 Batchsize가 작을수록 높은 성능이 나오지만, LR이 큰 경우, Batchsize가 클수록 성능이 높이 나오는 것을 알 수 있습니다. 하지만, Batchs..
Problem SSL로 Batchsize를 최대한 늘려 학습하고자 하는데, 잘 안되어 분산처리를 봤다. 사실 연관은 없는 것 같다.. (불가능.ㅠ) 결론 저희 연구실에서는 SSL을 하려면,TeslaV100을 하나 장만해야 함을 느꼈습니다.. import os local_rank=int(os.environ["LOCAL_RANK"]) import torch import torch.distributed as dist from torch.utils.data.distributed import DistributedSampler import torchvision.transforms as T from torch.utils.data import DataLoader from torchvision.models import ..
Pytorch에서의 Distributed Package 사용하기 - 규모가 큰 모델을 학습할 때는, 보통 분산 학습을 진행합니다. Multi-GPU 학습을 할 때, 분산 학습을 사용할 수 있습니다. 직접 구현할 수도 있지만, Pytorch에서 제공하는 기능을 사용합니다. - 아래의 코드는 ImageNet1K를 돌리는 경우를 보여줍니다. https://github.com/pytorch/examples/blob/main/imagenet/main.py main_worker에서 dist.init_process_group을 통하여, GPU마다 분산 학습을 위해서 초기화를 진행합니다. torch docs에 따르면, multi-gpu시, backend를 nccl로 설정하라고 되어 있습니다. DistributedDat..