Loading...
2024. 10. 30. 20:47

Unexpected key(s) in state_dict: "model.electra.embeddings.position_ids". 에러 해결하기

예전에 학습한 모델을 다시 써볼려고 하는데 import pytorch_lightning as plimport torchimport torch.nn as nnfrom transformers import AutoTokenizer,AutoModelForSequenceClassification,BertForSequenceClassificationdevice = "cuda" if torch.cuda.is_available() else "cpu"class TextClassificationStudentModule(pl.LightningModule): def __init__(self, config, labels, lr=5e-4, alpha=1.0): super().__init__() se..

2024. 8. 25. 20:38

Pytorch model forward에서 에러나는 경우 대처하기(input output model shape print해보기)

pytorch에서 model에 input을 넣어 forward 과정을 거쳐 output을 낼려고 할 때 종종 에러가 나는데   input으로 3d, 4d, 5d를 받아야하는데 2d가 들어왔다고 말하는거   딥러닝은 모델이 너무 복잡하기 때문에 머릿속에서 생각만으로 어디가 문제인지 알아내기 어렵다 모델 내부에서나, input, output등에 대해 중간중간에 shape를 찍어봐야함   중간에 grad_CAM의 shape를 찍어보면 실제로 2d라는 걸 확인할 수 있음   2d를 2번 unsqueeze(0)해서 4d로 만들고 넣었더니 더 이상 에러가 없었다 왜 2번했냐고? 1번만 하면 또 에러나서 그래 ------------------------------------------------------------..

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 ..