반응형
소개
torch.matmul은 PyTorch에서 텐서 간의 행렬 곱셈(matrix multiplication)을 수행하는 함수입니다. 이 함수는 1차원, 2차원, 다차원 텐서 간의 곱셈을 지원하며, 입력 텐서의 차원에 따라 벡터-벡터, 행렬-행렬, 또는 고차원 텐서 간의 곱셈을 수행합니다. 행렬 곱셈은 딥러닝 모델에서 특징 변환, 신경망 레이어 간의 연산 등을 수행하는 데 필수적입니다.
기본 사용법
상세 설명
- 벡터 곱셈
- 1차원 텐서 간의 곱셈을 수행하여 내적(dot product)을 계산할 수 있습니다.
- 이 경우 결과는 스칼라 값이 됩니다.
- 행렬 곱셈
- 2차원 텐서 간의 곱셈을 통해 전통적인 행렬 곱셈을 수행합니다.
- 고차원 텐서 곱셈
- 다차원 텐서의 행렬 곱셈을 수행할 때 마지막 두 차원에 대해 행렬 곱셈이 수행되며, 나머지 차원에 대해 브로드캐스팅이 적용됩니다.
예시 설명
- 첫 번째 예시에서 torch.matmul(tensor1, tensor2)는 두 2x2 행렬을 곱하여 새로운 2x2 행렬을 생성합니다.
- 두 번째 예시에서는 1D 벡터 간의 곱셈을 수행하여 내적을 계산합니다.
- 세 번째 예시에서는 2D 행렬과 1D 벡터를 곱하여 결과로 1D 벡터를 생성합니다.
- 마지막 예시에서는 두 3D 텐서 간의 곱셈을 수행하여 3차원 텐서가 생성됩니다.
import torch
# 두 2D 텐서 생성
tensor1 = torch.tensor([[1, 2], [3, 4]])
tensor2 = torch.tensor([[5, 6], [7, 8]])
# 행렬 곱셈
result = torch.matmul(tensor1, tensor2)
print(result)
# 출력: tensor([[19, 22],
# [43, 50]])
# 1D 벡터 곱셈 (내적)
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
result = torch.matmul(vector1, vector2)
print(result)
# 출력: tensor(32) # 1*4 + 2*5 + 3*6
# 2D 행렬과 1D 벡터의 곱셈
matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
vector = torch.tensor([7, 8, 9])
result = torch.matmul(matrix, vector)
print(result)
# 출력: tensor([ 50, 122])
# 고차원 텐서 간의 곱셈
tensor1 = torch.randn(2, 3, 4)
tensor2 = torch.randn(2, 4, 5)
result = torch.matmul(tensor1, tensor2)
print(result.size())
# 출력: torch.Size([2, 3, 5])
라이센스
PyTorch의 표준 라이브러리와 내장 함수들은 BSD-style license 하에 배포됩니다. 이 라이센스는 자유 소프트웨어 라이센스로, 상업적 사용을 포함한 거의 모든 용도로 사용이 가능합니다. 라이센스와 저작권 정보는 PyTorch의 공식 GitHub 리포지토리에서 확인할 수 있습니다.
관련 내용
반응형
'함수 설명 > 인공지능 (Pytorch)' 카테고리의 다른 글
[PyTorch] 배치(batch) 단위의 행렬 곱셈: torch.bmm() 설명 (0) | 2024.08.24 |
---|---|
[PyTorch] 2D 텐서 간의 행렬 곱셈: torch.mm() 설명 (0) | 2024.08.24 |
[PyTorch] 텐서 간의 나눗셈 연산: torch.div() 설명 (0) | 2024.08.24 |
[PyTorch] 텐서 간의 곱셈 연산: torch.mul() 설명 (0) | 2024.08.24 |
[PyTorch] 텐서 간의 뺄셈 연산: torch.sub() 설명 (0) | 2024.08.24 |