#pytorch
- Multi-Head Attention 직접 구현하기멀티헤드 어텐션을 직접 구현하면서 헷갈렸던 지점들을 정리한다. 헤드의 차원은 embedding_dim을 헤드 수로 나눈 것 먼저 헤드를 빼고 보면, 입력은 (B, L, D) = (batch_size, sequence_length, embedding_dim)이고, W q , W...
- nn.Embedding에 이해하기토큰 번호로 바뀐 문장이 어떻게 벡터가 되는지, nn.Embedding 의 동작을 간단하게 정리해봤다. (vocab_size, model_dim) 가중치 행렬 nn.Embedding 은 결국 (vocab_size, model_dimension) 크기의 가중치 행렬 하나다. 이 행렬...
- clone과 detach, 그리고 계산 그래프Pytorch에서 Tensor를 다룰 때 경고문을 자주 보았을 것이다. UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.detach().clone() ... rather than...
- Linear Layer와 ReLU를 직접 구현해보기nn.Linear 와 nn.ReLU 라는 이미 완성된 클래스가 존재하지만, 직접 구현해보면 더 명확하게 이해할 수 있고 재미있는 사실들도 발견할 수 있다. torch.nn 없이 직접 구현해보았다. Linear Layer 구현하기 선형 계층은 입력에 가중치를 곱하고 편향을 더하는 y...
- 가중치 초기화와 Kaiming(He) 초기화간단한 Linear Layer를 pytorch로 직접 구현해보면서, 가중치를 어떻게 초기화하느냐에 따라 학습 결과가 달라지는 것을 확인해보았다. 해당 내용에 대한 짧은 글이다. 표준정규분포로 초기화 torch.randn 으로 가중치를 초기화하면 표준정규분포(평균 0, 표준편차 1)...

- model.eval()과 torch.no_grad()Pytorch의 모델 평가 단계에서 거의 항상 같이 등장하는 model.eval() 과 torch.no_grad() 를 정리해봤다. model.eval() model.eval() 은 모델을 평가, 즉 Evaluation에 최적화된 상태로 만드는 과정이다. Training 과정에는...
- Dataset과 DataLoader, 그리고 데이터 파이프라인PyTorch에서 데이터가 모델에 들어가기까지의 파이프라인을 Dataset , DataLoader , 그리고 이미지 변환인 ToTensor 을 중심으로 정리. Dataset 클래스 PyTorch에서는 데이터의 전처리와 배치 처리를 용이하게 할 수 있도록 Dataset 과 DataL...
- zero_grad 가 필요한 이유학습 루프에서 자주 빠뜨리는 게 optimizer.zero_grad() 다. 그런데 이게 없으면 학습이 망가진다. 왜 매 스텝마다 기울기를 초기화해야 하는지 짧게 정리해봤다. loss.backward()는 기울기를 누적한다 핵심은 loss.backward() 의 동작이다. loss...
- 1. dim 쉽게 이해하기한참 Pytorch를 공부하고 있을 때, tensor.sum(dim=x) , torch.stack((tensors), dim=x) 등의 연산에서 dim=x 가 어떤 방향으로 연산이 이루어지는 건지 이해하기 어려웠었는데, 쉽게 이해할 수 있었던 방법을 정리해봤다. 단순한 규칙 알아두...
- 2. View의 작동 원리 이해하기PyTorch 공부를 하던 도중, 퀴즈를 풀다가 틀렸는데 아래 지문이 옳은 지문이라는 사실을 알고 나서 조금 놀랐었다. 당시 퀴즈 t = Tensor(3, 2) 이고, s = t[:2, :1] 일 때, view 를 사용해 s의 모양을 변경할 수 있다. 나는 s 가 contiguou...