일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- FGVC
- Meta Learning
- cs
- 머신러닝
- math
- Torch
- pytorch
- PRML
- ML
- SSL
- FineGrained
- 자료구조
- clean code
- 3d
- 딥러닝
- Depth estimation
- dl
- 알고리즘
- classification
- nerf
- computervision
- algorithm
- CV
- GAN
- nlp
- Vision
- Python
- web
- REACT
- Front
- Today
- Total
목록KalelPark's DataScience (216)
KalelPark's LAB
Sparse Convolution LiDAR 신호 처리에서 필수적인 역할을 합니다. 기존 Convolution과 다르게, GPU 계산 스키마를 사용하는 방식입니다. 3D point cloud 신호의 경우 추가적인 차원은 계산을 크게 증가시킵니다. 반면, 일반적인 이미지와 다르게, 3D voxel point cloud 데이터는 종종 Sparse 신호가 됩니다. 문제는 모든 이미지 픽셀이나 공간을 스캔하는 대신 Sparse 데이터로만, 효율적으로 계산합니다. 아래의 내용을 참고하면 됩니다. Reference https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Liu_Sparse_Convolutional_Neural_2015_CVPR_paper..
Pytorch에서 CUDA 호출은 asynchronize이기 때문에, 코드를 동기화 해줘야 합니다. 시간을 측정할 때, 사용됩니다. torch.cuda.Event()는 device의 progress를 모니터링하는데 사용할 수 있는 synchronization markers입니다. -> CUDA stream 내부 명령 흐름 중 특정 지점에 표시를 남기는 것입니다. 정확하기 시간을 측정하고자 한다면, synchronize를 해야한다고, 공식 문서에서 언급했습니다. 이벤트가 처음 record되거나, 다른 프로세스를 내보낼 때, 기본 CUDA 이벤트가 느리게 초기화 됩니다. 생성 후에는 동일한 장치의 stream만 event로 기록할 수 있습니다. 그러나 모든 장치의 stream은 이벤트를 기다릴 수 있습니다...
Pytorch를 사용할 때, 모델을 빠르게 학습시켜야 할 경우가 있습니다. 이러한 경우, 병렬화를 사용하는 것이 좋습니다. - 학습을 더 빨리 끝내기 위해서, - 모델이 너무 커서 이를 분할하여, GPU에 올리기 위함입니다. * 기존 torch.nn.DataParallel의 문제점은 1) 멀티쓰레드 모듈을 사용하기에 Python에서 상당히 효율적이지 않습니다. - Python은 GIL (Global Interpreter Lock)에 의하여, 하나의 프로세스에서 동시에 여러개의 쓰레드가 작동할 수 없습니다. 그러므로, 멀티 쓰레드가 아닌 멀티 프로세스 프로그램을 만들어서 여러개의 프로세스를 동시에 실행하게 해야 합니다. 2) 하나의 모델에서 업데이트 된 모델이 다른 device로 매 step마다 복제해야 ..
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 ..