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.