pytorch

Languages/Python

[Pytorch] Broadcasting: 차원이 다를 때 연산

Pytorch를 이용하여 모델을 구현하다 보면 텐서 간의 덧셈, 곱셈 등 연산을 수행할 때 차원이 서로 다른 경우를 자주 만나게 된다. 그런데도 에러 없이 연산이 가능한 이유는 바로 Broadcasting 때문이다. Broadcasting은 Numpy에서 도입된 개념으로, PyTorch에서도 동일하게 적용된다. 이 기능 덕분에 복잡한 차원 조작 없이도 깔끔한 수식 구현이 가능하다.Broadcasting이란 서로 shape가 다른 두 tensor 간의 연산에서 작은 텐서의 shape을 자동으로 확장하여 큰 텐서와 연산이 가능하도록 맞춰주는 암시적(implicit) 규칙이다. 이는 개발자가 명시적으로 .expand()나 .repeat()를 호출하지 않아도 자동으로 연산되게 도와주는 기능이다. 아래의 조건이 ..

Languages/Python

[Pytorch] view, reshape, transpose, permute 함수 사용법과 contiguous 특성

Pytorch를 이용하여 코드를 구현할 때 데이터의 차원을 수정하거나 조작할 때 가장 많이 사용되는 함수는 view, reshape, transpose, permute이다. 이 함수들에 대해 제대로 된 사용법과 특징을 정리할 필요가 있다 생각하여 남겨두고자 한다. 또한 contiguous한 특성에 따라 어떤 함수를 사용하여야 하는지도 함께 정리하려 한다. view()메모리를 공유하며 차원 변경연속된(Contiguous) 메모리를 사용할 때만 가능원본 텐서와 메모리를 공유 (즉, view()를 바꿔도 원본도 바뀜) import torchx = torch.arange(6) # [0, 1, 2, 3, 4, 5]y = x.view(2, 3) print(y)# 출력# tensor([[0, 1, 2], # ..

AlienCoder
'pytorch' 태그의 글 목록
loading