본문 바로가기
728x90
반응형

pytorch8

Pytorch Custom CosineAnnealingWarmRestarts 정리 CosineAnnealingWarmRestarts 코드 : https://github.com/pytorch/pytorch/blob/v1.1.0/torch/optim/lr_scheduler.py#L655 CosineAnnealingWarmRestarts에 대하여 다루어 보겠습니다. (개인적으로 이 스케쥴러는 아쉽게 구현이 되어있습니다. 왜냐하면 warmup start가 구현되어 있지 않고 learning rate 최댓값이 감소하는 방법이 구현되어 있지 않기 때문입니다. 따라서 아래 따로 구현한 Custom CosineAnnealingWarmRestarts을 사용하길 바랍니다.) 사용할 파라미터는 optimizer 외에 T_0, T_mult 그리고 eta_min이 있습니다. - T_0는 최초 주기값 입니다... 2023. 2. 15.
DataLoader num_workers에 대한 고찰 Pytorch에서 학습 데이터를 읽어오는 용도로 사용되는 DataLoader는 torch 라이브러리를 import만 하면 쉽게 사용할 수 있어서 흔히 공식처럼 잘 쓰고 있습니다. 다음과 같이 같이 사용할 수 있겠네요. from torch.utils.data import DataLoader 상세한 설명이 기술되어 있는 공식 문서는 아래 링크에서 살펴볼 수 있습니다. https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader torch.utils.data — PyTorch 1.13 documentation torch.utils.data At the heart of PyTorch data loading utility is the torch.ut.. 2023. 2. 3.
[파이토치] zero_grad()의 이해 Neural Network에서 parameter들을 업데이트 할때 우리는 zero_grad()를 습관적으로 사용한다. import torch as T import torch,optimizer as optim optimizer = optim.Adam(lr=lr, params=self.parameters()) ... optimizer.zero_grad() loss.backward() optimizer.step() zero_grad()의 의미가 뭔지, 왜 사용하는지 알아보장 TORCH.OPTIM.OPTIMIZER.ZERO_GRAD Optimizer.zero_grad(set_to_none=False)[source] Sets the gradients of all optimized torch.Tensor s to .. 2023. 1. 26.
[Pytorch] torch.view, torch.reshape의 사용법과 차이 비교 파이토치 view 함수와 reshape 함수 비교 안녕하세요. 이번 글에서는 파이토치에서 텐서의 차원 변환을 할 때 사용하는 torch.view와 torch.reshape 함수의 기본적인 사용법과 두 함수의 차이에 대하여 다루어보는 시간을 가져보겠습니다. view와 reshape 함수의 기본적인 사용법을 익혀보기 위하여 아래의 간단한 12개의 원소를 가지는 1차원 텐서가 있다고 가정해보겠습니다. import torch x = torch.arange(12) x # tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) view와 reshape 모두 input으로 원하는 차원의 형태를 바로 적어주시면 사용이 완료됩니다. 이 두 함수의 겉으로 보이는 반환 결과는 동일합니다. x... 2023. 1. 10.
[Pytorch] contiguous 원리와 의미 torch의 contiguous에 대해서 안녕하세요. 이번 시간에는 파이토치에서 메모리 내에서의 자료형 저장 상태로 등장하는 contiguous의 원리와 의미에 대해서 간단히 살펴보도록 하겠습니다. contiguous 여부와 stride 의미 간단한 예시를 들어 설명하기 위해서 shape이 (4, 3)으로 동일한 두 tensor a, b를 다음과 같이 선언해보겠습니다. import torch a = torch.randn(3, 4) a.transpose_(0, 1) b = torch.randn(4, 3) # 두 tensor는 모두 (4, 3) shape print(a) ''' tensor([[-0.7290, 0.7509, 1.1666], [-0.9321, -0.4360, -0.2715], [ 0.1232,.. 2023. 1. 10.
[PYTORCH] POINTWISE OPS 파이토치의 공식 문서에 Math operations 부분을 살펴보면 pointwise로 연산을 한다고 한다. pointwise로 연산을 한다는 것은 문자 그대로 함수의 정의역에 있는 각 점마다 연산을 한다는 내용이다. 즉, 특정 속성이 각 값을 고려하여 정의 된다는 것이다. Tensor를 구성하는 각 data에 대해 각각 연산을 적용한다는 뜻이다. 따라서 입력 텐서와 출력 텐서의 차원의 크기는 서로 같다. ▼ pointwise에 대한 수학적 정의 파이토치의 공식문서에서 소개한 Pointwise Ops 중 3개를 예시코드로 함께 알아보려 한다. torch.addcmul torch.exp torch.pow torch.addcmul torch.addcmul은 pointwise로 tensor1에 tensor2를.. 2023. 1. 10.
torch.nn.functional.interpolate torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None) input을 주어진 size또는 scale factor에 맞게 upsampling 또는 downsampling한다. interpolation에 쓰이는 알고리즘은 model에 따라 달라진다. 현재 temporal, spatial, volumetric sampling이 지원되고 있다. 즉 예상되는 input은 3-D, 4-D, 5-D shape이다. input dimension은 mini-batch x channels x [optional depth] x [optional.. 2023. 1. 9.
[Pytorch] hook (forward_hook, backward_hook) Hook 패키지 중간에 자기가 원하는 코드 끼워넣을 수 있는 부분 정도로 이해하면 될 듯하다! (register hook) hook: 일반적으로 hook은 프로그램, 혹은 특정 함수 실행 후에 걸어놓는 경우를 일컬음. pre-hook: 프로그램 실행 전에 걸어놓는 hook forward hook register_forward_hook: forward 호출 후에 forward output 계산 후 걸어두는 hook # register_forward_hook should have the following signature hook(module, input, output) -> None or modified output input은 positional arguments만 담을 수 있으며 (index 같은?) .. 2023. 1. 9.
728x90
반응형