Visualizando Matrizes de Pesos com Diagramas de Hinton

Beginner

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

Introdução

Neste laboratório, aprenderemos como usar diagramas de Hinton para visualizar matrizes de pesos. Diagramas de Hinton são muito úteis quando você deseja visualizar um array 2D, como uma matriz de pesos. Valores positivos e negativos são representados por quadrados brancos e pretos, respectivamente, e o tamanho de cada quadrado representa a magnitude de cada valor.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importando Bibliotecas

Começaremos importando as bibliotecas necessárias para este laboratório. Neste caso, precisaremos de matplotlib e numpy.

import matplotlib.pyplot as plt
import numpy as np

Definindo a Função Hinton

Em seguida, definiremos uma função chamada hinton que gerará o diagrama de Hinton. Esta função recebe uma matriz, que é a matriz de pesos que queremos visualizar, e um parâmetro max_weight, que é um parâmetro opcional que especifica o valor máximo do peso para fins de normalização.

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

Gerando um Diagrama de Hinton

Agora, geraremos uma matriz de pesos aleatórios usando numpy e, em seguida, usaremos a função hinton para gerar o diagrama de Hinton.

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

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

Resumo

Neste laboratório, aprendemos como usar diagramas de Hinton para visualizar matrizes de pesos. Definimos uma função chamada hinton que gera o diagrama de Hinton e, em seguida, a usamos para gerar uma matriz de pesos aleatórios. Diagramas de Hinton são muito úteis para visualizar arrays 2D, como matrizes de pesos, e podem ser usados para identificar rapidamente padrões e tendências nos dados.