Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

PyTorch 텐서에서 평균과 표준편차를 계산하는 방법

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])