PyTorch에서는 torch.add() 함수를 사용하여 텐서에 대한 요소별(element-wise) 덧셈을 수행할 수 있습니다. 이 함수는 두 텐서에서 서로 대응되는 요소들을 더해 새로운 텐서를 반환합니다. 스칼라 값을 텐서에 더할 수도 있고, 차원이 같거나 다른 텐서끼리도 더할 수 있습니다. 최종 결과 텐서의 차원은 두 텐서 중 더 높은 차원을 가진 텐서와 동일하게 결정됩니다.
수행 절차
필요한 라이브러리를 임포트합니다. 아래의 모든 Python 예제에서 필요한 라이브러리는 torch입니다. 미리 설치되어 있는지 확인하세요.
두 개 이상의 PyTorch 텐서를 정의하고 출력합니다. 스칼라 값을 더하려면 해당 스칼라 값도 함께 정의합니다.
torch.add()를 사용해 두 개 이상의 텐서를 더하고 그 결과를 새로운 변수에 할당합니다. 텐서에 스칼라 값을 더하는 것도 가능합니다. 이 방식으로 텐서를 더하면 원본 텐서에는 어떠한 변경도 일어나지 않습니다.
최종 결과 텐서를 출력합니다.
예제 1
다음 Python 프로그램은 텐서에 스칼라 값을 더하는 방법을 보여줍니다. 동일한 작업을 세 가지 다른 방식으로 수행할 수 있습니다.
# 요소별 덧셈을 수행하는 Python 프로그램
# 필요한 라이브러리 임포트
import torch
# 텐서 생성
t = torch.Tensor([1,2,3,2])
print("Original Tensor t:\n", t)
# 텐서에 스칼라 값 더하기
v = torch.add(t, 10)
print("Element-wise addition result:\n", v)
# 동일한 연산을 다른 방식으로 수행
t1 = torch.Tensor([10])
w = torch.add(t, t1)
print("Element-wise addition result:\n", w)
# 위 연산을 또 다른 방식으로 수행
t2 = torch.Tensor([10,10,10,10])
x = torch.add(t, t2)
print("Element-wise addition result:\n", x)출력 결과
Original Tensor t: tensor([1., 2., 3., 2.]) Element-wise addition result: tensor([11., 12., 13., 12.]) Element-wise addition result: tensor([11., 12., 13., 12.]) Element-wise addition result: tensor([11., 12., 13., 12.])
예제 2
다음 Python 프로그램은 1차원 텐서와 2차원 텐서를 더하는 방법을 보여줍니다.
# 라이브러리 임포트
import torch
# 2차원 텐서 생성
T1 = torch.Tensor([[1,2],[4,5]])
# 1차원 텐서 생성
T2 = torch.Tensor([10]) # t2 = torch.Tensor([10,10])과 동일
print("T1:\n", T1)
print("T2:\n", T2)
# 1차원 텐서를 2차원 텐서에 더하기
v = torch.add(T1, T2)
print("Element-wise addition result:\n", v)출력 결과
T1:
tensor([[1., 2.],
[4., 5.]])
T2:
tensor([10.])
Element-wise addition result:
tensor([[11., 12.],
[14., 15.]])예제 3
다음 프로그램은 2차원 텐서끼리 더하는 방법을 보여줍니다.
# 라이브러리 임포트
import torch
# 두 개의 2차원 텐서 생성
T1 = torch.Tensor([[1,2],[3,4]])
T2 = torch.Tensor([[0,3],[4,1]])
print("T1:\n", T1)
print("T2:\n", T2)
# 위의 두 2차원 텐서 더하기
v = torch.add(T1,T2)
print("Element-wise addition result:\n", v)출력 결과
T1:
tensor([[1., 2.],
[3., 4.]])
T2:
tensor([[0., 3.],
[4., 1.]])
Element-wise addition result:
tensor([[1., 5.],
[7., 5.]])