PyTorch에서 텐서의 히스토그램은 torch.histc() 함수를 사용하여 계산할 수 있습니다. 이 함수는 히스토그램 결과를 텐서 형태로 반환하며, input, bins, min, max 총 네 가지 매개변수를 받습니다. 함수는 min과 max 사이의 범위를 동일한 폭을 가진 구간(bin)으로 나누고, 각 구간에 속하는 요소들의 개수를 세어 히스토그램을 만듭니다. 이때 min보다 작거나 max보다 큰 요소들은 자동으로 제외됩니다.
히스토그램 계산 절차
필요한 라이브러리를 임포트합니다. 아래의 모든 파이썬 예제에서는 torch와 Matplotlib 라이브러리가 필요하므로, 미리 설치되어 있는지 확인하세요.
텐서를 생성하고 화면에 출력합니다.
torch.histc(input, bins=100, min=0, max=100) 형태로 함수를 호출하여 히스토그램을 계산합니다. 이때 반환값은 히스토그램 값을 담은 텐서입니다. bins, min, max 값은 분석 목적에 맞게 적절히 조정하면 됩니다.
계산된 히스토그램을 출력하여 확인합니다.
막대 그래프(bar chart) 형태로 히스토그램을 시각화합니다.
예제 1: 텐서의 히스토그램 계산하기
# 텐서의 히스토그램을 계산하는 파이썬 프로그램
# 필요한 라이브러리 임포트
import torch
import matplotlib.pyplot as plt
# 텐서 생성
T = torch.Tensor([2,3,1,2,3,4,3,2,3,4,3,4])
print("원본 텐서 T:\n", T)
# 위에서 생성한 텐서의 히스토그램 계산
hist = torch.histc(T, bins = 5, min = 0, max = 4)
print("텐서 T의 히스토그램:\n", hist)
실행 결과
원본 텐서 T:
tensor([2., 3., 1., 2., 3., 4., 3., 2., 3., 4., 3., 4.])
텐서 T의 히스토그램:
tensor([0., 1., 3., 5., 3.])
위 실행 결과를 보면, 범위 0~4를 5개의 구간으로 나누었을 때 각 구간에 해당하는 값의 개수가 순서대로 [0, 1, 3, 5, 3]으로 집계된 것을 확인할 수 있습니다.
예제 2: 히스토그램을 막대 그래프로 시각화하기
# 텐서의 히스토그램을 계산하는 파이썬 프로그램
# 필요한 라이브러리 임포트
import torch
import matplotlib.pyplot as plt
# 텐서 생성
T = torch.Tensor([2,3,1,2,3,4,3,2,3,4,3,4])
print("원본 텐서 T:\n", T)
# 위에서 생성한 텐서의 히스토그램 계산
hist = torch.histc(T, bins = 5, min = 0, max = 4)
# 계산된 히스토그램을 막대 그래프로 시각화
bins = 5
x = range(bins)
plt.bar(x, hist, align='center')
plt.xlabel('Bins')
plt.ylabel('Frequency')
plt.show()
실행 결과
원본 텐서 T:
tensor([2., 3., 1., 2., 3., 4., 3., 2., 3., 4., 3., 4.])

이처럼 torch.histc()와 Matplotlib를 함께 사용하면, 텐서 데이터의 값 분포를 손쉽게 계산하고 직관적인 그래프로 확인할 수 있습니다. 데이터 전처리나 통계 분석 과정에서 값의 분포를 빠르게 파악할 때 유용하게 활용할 수 있습니다.