힌튼 다이어그램을 이용한 가중치 행렬 시각화

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 가중치 행렬을 시각화하기 위해 힌튼 다이어그램 (Hinton diagrams) 을 사용하는 방법을 배웁니다. 힌튼 다이어그램은 가중치 행렬과 같이 2 차원 배열을 시각화하려는 경우 매우 유용합니다. 양수와 음수 값은 각각 흰색과 검은색 사각형으로 표시되며, 각 사각형의 크기는 각 값의 크기를 나타냅니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 액세스하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 임포트

이 랩에 필요한 라이브러리를 임포트하는 것으로 시작합니다. 이 경우 matplotlib 와 numpy 가 필요합니다.

import matplotlib.pyplot as plt
import numpy as np

힌튼 함수 정의

다음으로, 힌튼 다이어그램을 생성하는 hinton이라는 함수를 정의합니다. 이 함수는 시각화하려는 가중치 행렬인 행렬과 정규화 목적으로 최대 가중치 값을 지정하는 선택적 매개변수인 max_weight 매개변수를 입력으로 받습니다.

def hinton(matrix, max_weight=None, ax=None):
    """Draw Hinton diagram for visualizing a weight matrix."""
    ax = ax if ax is not None else plt.gca()

    if not max_weight:
        max_weight = 2 ** np.ceil(np.log2(np.abs(matrix).max()))

    ax.patch.set_facecolor('gray')
    ax.set_aspect('equal', 'box')
    ax.xaxis.set_major_locator(plt.NullLocator())
    ax.yaxis.set_major_locator(plt.NullLocator())

    for (x, y), w in np.ndenumerate(matrix):
        color = 'white' if w > 0 else 'black'
        size = np.sqrt(abs(w) / max_weight)
        rect = plt.Rectangle([x - size / 2, y - size / 2], size, size,
                             facecolor=color, edgecolor=color)
        ax.add_patch(rect)

    ax.autoscale_view()
    ax.invert_yaxis()

힌튼 다이어그램 생성

이제 numpy 를 사용하여 무작위 가중치 행렬을 생성한 다음 hinton 함수를 사용하여 힌튼 다이어그램을 생성합니다.

if __name__ == '__main__':
    ## Fixing random state for reproducibility
    np.random.seed(19680801)

    hinton(np.random.rand(20, 20) - 0.5)
    plt.show()

요약

이 랩에서는 가중치 행렬을 시각화하기 위해 힌튼 다이어그램을 사용하는 방법을 배웠습니다. 힌튼 다이어그램을 생성하는 hinton이라는 함수를 정의한 다음, 이를 사용하여 무작위 가중치 행렬을 생성했습니다. 힌튼 다이어그램은 가중치 행렬과 같은 2 차원 배열을 시각화하는 데 매우 유용하며, 데이터의 패턴과 추세를 빠르게 식별하는 데 사용할 수 있습니다.