Gewichtsmatrizen mit Hinton-Diagrammen visualisieren

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen wir, wie man Hinton-Diagramme zum Visualisieren von Gewichtsmatrizen verwendet. Hinton-Diagramme sind sehr nützlich, wenn man ein 2D-Array, wie eine Gewichtsmatrix, visualisieren möchte. Positive und negative Werte werden jeweils durch weiße und schwarze Quadrate dargestellt, und die Größe jedes Quadrats repräsentiert die Größe des jeweiligen Werts.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren

Wir beginnen mit dem Import der erforderlichen Bibliotheken für dieses Lab. In diesem Fall benötigen wir matplotlib und numpy.

import matplotlib.pyplot as plt
import numpy as np

Definition der Hinton-Funktion

Als nächstes definieren wir eine Funktion namens hinton, die das Hinton-Diagramm generiert. Diese Funktion nimmt eine Matrix entgegen, die die Gewichtsmatrix ist, die wir visualisieren möchten, und einen optionalen Parameter max_weight, der den maximalen Gewichtswert für die Normalisierung angibt.

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

Erzeugen eines Hinton-Diagramms

Jetzt werden wir mithilfe von numpy eine zufällige Gewichtsmatrix erzeugen und dann die hinton-Funktion verwenden, um das Hinton-Diagramm zu erzeugen.

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

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

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Hinton-Diagramme zum Visualisieren von Gewichtsmatrizen verwendet. Wir haben eine Funktion namens hinton definiert, die das Hinton-Diagramm generiert, und dann verwendet, um eine zufällige Gewichtsmatrix zu erzeugen. Hinton-Diagramme sind sehr nützlich zum Visualisieren von 2D-Arrays, wie Gewichtsmatrizen, und können verwendet werden, um Muster und Trends in den Daten schnell zu identifizieren.