Визуализация матриц весов с использованием диаграмм Хинтона

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы узнаем, как использовать диаграммы Хинтона для визуализации матриц весов. Диаграммы Хинтона очень полезны, когда вы хотите визуализировать двумерный массив, такой как матрица весов. Положительные и отрицательные значения представляются белыми и черными квадратами соответственно, а размер каждого квадрата представляет величину каждого значения.

Советы по работе с ВМ

После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Начнем с импорта необходимых библиотек для этого лабара. В данном случае нам понадобятся matplotlib и numpy.

import matplotlib.pyplot as plt
import numpy as np

Определение функции Hinton

Далее мы определим функцию под названием 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, которая генерирует диаграмму Хинтона, и затем использовали ее для генерации случайной матрицы весов. Диаграммы Хинтона очень полезны для визуализации двумерных массивов, таких как матрицы весов, и могут быть использованы для быстрого выявления паттернов и тенденций в данных.