Loading...
2024. 4. 19. 03:02

Pytorch에서 padding sequence vs. packed sequence 차이 이해하고 구현하기

https://heekangpark.github.io/ml/shorts/padded-sequence-vs-packed-sequence Padded Sequence vs. Packed Sequence | Reinventing the Wheel 문제상황 자연어와 같은 sequence 데이터들을 다루다 보면 짜증나는 요소가 하나 있는데, 바로 그 길이가 일정하지 않다는 것이다. 이미지 데이터의 경우 crop이나 resize 등으로 가로 세로 크기를 맞 heekangpark.github.io 자연어같은 sequence 데이터는 input들의 길이가 다 다른 경우가 보통이기 때문에 이것을 어떻게 처리할 지 고민할 필요가 있다. 이미지는 crop이나 resize로 이미지 크기를 전부 맞추고 진행하면, batch로 ..

2024. 4. 17. 23:42

Pytorch에서 learning rate scheduler 사용하는 방법 알기

1. 개요 learning rate는 model train 성능을 결정하는 중요한 요소 동일한 learning rate를 사용하여 처음부터 끝까지 학습을 할 수도 있지만, 초반에는 큰 learning rate를 사용하여 빠르게 최적값에 가다가, 후반에는 작은 learning rate를 사용하여 미세조정을 할 수도 있다. 기본적인 원리는 지정한 epoch 스텝마다 learning rate에 gamma를 곱한 값을 새로운 learning rate라 하고 다음 epoch을 돌린다. 2. 기본적인 사용법 Pytorch에서는 다양한 learning rate scheduler를 지원하고 있다. 기본적으로 학습시에 batch마다 optimizer.step()을 하고 나서, batch마다 learning rate를 바..

2024. 4. 14. 02:14

torch.where()로 tensor내 특정 원소의 위치를 찾기

gaussian heatmap에서 landmark localization (x,y) 좌표를 얻어내는 방법은 landmark localization이라는 것이 가장 주목할 부분, heatmap에서 가장 밝게 빛나는 부분이므로 heatmap의 activation value중 가장 큰 값의 (x,y)좌표를 얻어오면 된다 주어진 heatmap tensor hm에서 최댓값 부분을 어떻게 찾아오느냐? hm에서 최댓값을 가져오려면 hm.max()나 torch.max(hm)을 사용한다 hm==torch.max(hm)을 하면 True, False를 원소로 가지는 hm 크기와 동일한 tensor가 나온다 True의 위치를 찾는게 목적이라고 할 수 있다. 어떻게 찾을까? torch.where()나 np.where()함수는 ..

2024. 4. 13. 00:33

Pytorch의 computational graph와 backward()에 대해 이해하기

1. computational graph   computational graph라는 것은 pytorch가 최종 변수에 대한 (위 그림에서는 L)  forward pass를 통해 계산되는 모든 과정이 graph 형태로 저장되어 있는 것을 의미한다. 위의 그림은 a, b, c, d, L, w1,w2,w3,w4 9개의 변수 값들의 계산 과정이 기록되어 있는 computational graph이다. 위 그림에서 예를 들어 c를 계산할려면 a와 w2의 어떤 연산으로 c가 계산되어진다는 의미다. 이렇게 저장을 해놓으면 chain rule에 의한 backward pass 계산이 쉬워진다.  2. backward forward pass를 통해 변수에 대해 계산을 하면 pytorch에서 알아서 computational ..

2024. 4. 11. 03:27

Pytorch에서 두 tensor가 서로 같은지 비교하고 싶다면?

a = torch.tensor([1,2,3,4]) b = torch.tensor([2,3,5,1]) 위와 같은 두 텐서가 있을때, 서로 같은지 알고싶다.. 크기가 작으니 바로 보면 다르다는 것 알 수 있는데 얘 둘을 비교해보라고 한다면? a == b 해버리면... 예상하는 결과와 다르게 나온다 이렇게 하면 진짜 True인지 False인지 바로 알기 어렵다.. tensor의 원소 하나하나 True인지 False인지 체크해야하거든.. torch.all()을 이용해서 boolean tensor의 모든 boolean을 비교해서... 전부 True이면 True이고 하나라도 False이면 False https://doheejin.github.io/pytorch/2021/02/13/pytorch-function.ht..

2024. 4. 11. 03:17

pretrained된 computer vision 모델에서 마지막 linear layer는 제거하고 feature만 뽑는법

예를 들어 resnet model에 대해 pretrained된 모델을 불러오고 import torchvision.models as models resnet = models.resnet152(pretrained=True) resnet.children()하면 resnet의 모듈을 불러올수 있다 마지막에 Linear() classifier layer가 있는데 얘를 제거하면 된다 modules = list(resnet.children())[:-1] # fully connected layer의 가장 마지막 layer 제거 이렇게 제거된 모듈을 nn.Sequential()로 sequential한 모델을 만들면 된다 import torch import torch.nn as nn import torchvision.mo..