PyTorch 텐서는 NumPy 배열과 매우 유사하지만, 가장 큰 차이점은 GPU를 활용해 수치 연산을 가속화할 수 있다는 점입니다. 텐서의 평균(mean)은 torch.mean() 메서드로 계산할 수 있으며, 입력 텐서에 포함된 모든 요소의 평균값을 반환합니다. 또한 적절한 축(axis) 또는 차원(dim)을 지정하면 행 단위(row-wise)나 열 단위(column-wise)로도 평균을 구할 수 있습니다.
텐서의 표준편차(standard deviation)는 torch.std() 메서드로 계산합니다. 이 메서드 역시 텐서 내 모든 요소에 대한 표준편차를 반환하며, 평균과 마찬가지로 행 또는 열 방향으로 계산할 수 있습니다.
계산 순서
필요한 라이브러리를 임포트합니다. 아래의 모든 Python 예제에서 필요한 라이브러리는 torch입니다. 미리 설치되어 있는지 확인하세요.
PyTorch 텐서를 정의하고 출력합니다.
torch.mean(input, axis)를 사용해 평균을 계산합니다. 여기서 input은 평균을 구할 대상 텐서이고, axis(또는 dim)은 차원의 목록입니다. 계산된 평균은 새 변수에 저장합니다.
torch.std(input, axis)를 사용해 표준편차를 계산합니다. input은 텐서, axis(또는 dim)은 차원의 목록입니다. 계산된 표준편차 역시 새 변수에 저장합니다.
계산된 평균과 표준편차를 출력합니다.
예제 1: 1차원 텐서
다음 Python 프로그램은 1차원 텐서의 평균과 표준편차를 계산하는 방법을 보여줍니다.
# Python program to compute mean and standard
# deviation of a 1D tensor
# 라이브러리 임포트
import torch
# 텐서 생성
T = torch.Tensor([2.453, 4.432, 0.754, -6.554])
print("T:", T)
# 평균과 표준편차 계산
mean = torch.mean(T)
std = torch.std(T)
# 결과 출력
print("Mean:", mean)
print("Standard deviation:", std)출력 결과
T: tensor([ 2.4530, 4.4320, 0.7540, -6.5540]) Mean: tensor(0.2713) Standard deviation: tensor(4.7920)
예제 2: 2차원 텐서
다음 Python 프로그램은 2차원 텐서의 평균과 표준편차를 전체 요소 기준, 열 단위, 행 단위 세 가지 방식으로 계산하는 방법을 보여줍니다.
# 필요한 라이브러리 임포트
import torch
# 3x4 크기의 2차원 텐서 생성
T = torch.Tensor([[2,4,7,-6],
[7,33,-62,23],
[2,-6,-77,54]])
print("T:\n", T)
# 전체 요소의 평균과 표준편차 계산
mean = torch.mean(T)
std = torch.std(T)
print("Mean:", mean)
print("Standard deviation:", std)
# 열(column) 단위 평균과 표준편차 계산
mean = torch.mean(T, axis = 0)
std = torch.std(T, axis = 0)
print("Column-wise Mean:\n", mean)
print("Column-wise Standard deviation:\n", std)
# 행(row) 단위 평균과 표준편차 계산
mean = torch.mean(T, axis = 1)
std = torch.std(T, axis = 1)
print("Row-wise Mean:\n", mean)
print("Row-wise Standard deviation:\n", std)출력 결과
T: tensor([[ 2., 4., 7., -6.], [ 7., 33., -62., 23.], [ 2., -6., -77., 54.]]) Mean: tensor(-1.5833) Standard deviation: tensor(36.2703) Column-wise Mean: tensor([ 3.6667, 10.3333, -44.0000, 23.6667]) Column-wise Standard deviation: tensor([ 2.8868, 20.2567, 44.7996, 30.0056]) Row-wise Mean: tensor([ 1.7500, 0.2500, -6.7500]) Row-wise Standard deviation: tensor([ 5.5603, 42.8593, 53.8602])