728x90
반응형
파이토치의 공식 문서에 Math operations 부분을 살펴보면 pointwise로 연산을 한다고 한다.
pointwise로 연산을 한다는 것은 문자 그대로 함수의 정의역에 있는 각 점마다 연산을 한다는 내용이다. 즉, 특정 속성이 각 값을 고려하여 정의 된다는 것이다. Tensor를 구성하는 각 data에 대해 각각 연산을 적용한다는 뜻이다. 따라서 입력 텐서와 출력 텐서의 차원의 크기는 서로 같다.
▼ pointwise에 대한 수학적 정의
파이토치의 공식문서에서 소개한 Pointwise Ops 중 3개를 예시코드로 함께 알아보려 한다.
torch.addcmul
torch.addcmul은 pointwise로 tensor1에 tensor2를 곱한다. 곱한 결과를 value라는 스칼라 값을 곱해 input에 더한다. 이를 수식으로 나타내면 아래와 같다.
torch.addcmul(input, tensor1, tensor2, *, value=1, out=None) -> Tensor
이때 tensor1`과 `tensor2의 텐서의 모양은 반드시 broadcastable 해야한다.
t = torch.arange(9, 0, -1).reshape(3, 3)
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
result = t.addcmul(a, b)
print(result)
실행 결과
tensor([[13, 18, 25],
[10, 15, 22],
[ 7, 12, 19]])
torch.exp
torch.exp는 입력 텐서 input의 각 원소의 밑이 자연상수 e인 지수를 반환한다.
x = torch.arange(0, 10, 0.5)
y = torch.exp(x)
print(y)
실행 결과
tensor([1.0000e+00, 1.6487e+00, 2.7183e+00, 4.4817e+00, 7.3891e+00, 1.2182e+01,
2.0086e+01, 3.3115e+01, 5.4598e+01, 9.0017e+01, 1.4841e+02, 2.4469e+02,
4.0343e+02, 6.6514e+02, 1.0966e+03, 1.8080e+03, 2.9810e+03, 4.9148e+03,
8.1031e+03, 1.3360e+04])
torch.pow
torch.pow 는input`의 각 원소를 밑으로 하는 `exponent`의 지수를 반환한다. `exponent`의 값은 하나의 float 값일 수 있고 입력 텐서와 원소의 수가 같은 Tensor일 수 있다. 이 경우 `input`과 `exponent는 반드시 broadcastable 해야 한다.
a = torch.arange(5)
print(torch.pow(a, 2))
exp = torch.arange(5)
print(torch.pow(a, exp))
실행 결과
tensor([ 0, 1, 4, 9, 16])
tensor([ 1, 1, 4, 27, 256])
728x90
반응형
'딥러닝&머신러닝 > 파이토치 기본 문법' 카테고리의 다른 글
[Pytorch] contiguous 원리와 의미 (0) | 2023.01.10 |
---|---|
[PyTorch] `model.eval()` 의미 (0) | 2023.01.10 |
torch.nn.functional.interpolate (0) | 2023.01.09 |
[PyTorch] Tensor 합치기: cat(), stack() (0) | 2023.01.09 |
[Pytorch] squeeze와 unsqueeze 함수 사용법 정리 (0) | 2023.01.09 |
댓글