Visualizar matrices de pesos con diagramas de Hinton

Beginner

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

Introducción

En este laboratorio, aprenderemos a usar diagramas de Hinton para visualizar matrices de pesos. Los diagramas de Hinton son muy útiles cuando se desea visualizar una matriz bidimensional, como una matriz de pesos. Los valores positivos y negativos se representan por cuadrados blancos y negros, respectivamente, y el tamaño de cada cuadrado representa la magnitud de cada valor.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importando bibliotecas

Comenzaremos importando las bibliotecas necesarias para este laboratorio. En este caso, necesitaremos matplotlib y numpy.

import matplotlib.pyplot as plt
import numpy as np

Definiendo la función de Hinton

A continuación, definiremos una función llamada hinton que generará el diagrama de Hinton. Esta función toma una matriz, que es la matriz de pesos que queremos visualizar, y un parámetro max_weight, que es un parámetro opcional que especifica el valor máximo de peso para fines de normalización.

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

Generando un diagrama de Hinton

Ahora, generaremos una matriz de pesos aleatoria usando numpy y luego usaremos la función hinton para generar el 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()

Resumen

En este laboratorio, aprendimos a usar diagramas de Hinton para visualizar matrices de pesos. Definimos una función llamada hinton que genera el diagrama de Hinton y luego la usamos para generar una matriz de pesos aleatoria. Los diagramas de Hinton son muy útiles para visualizar matrices bidimensionales, como las matrices de pesos, y se pueden usar para identificar rápidamente patrones y tendencias en los datos.