Создание нейронных сетей часто включает отладку структуры, последовательности и функций потерь, используемых в различных частях модели. Какой инструмент дает лучшее понимание? Мы рассмотрим популярные решения с опциями 1D, 2D и 3D!

Построение сетей часто включает просмотр результирующего вычислительного графа и подтверждение того, что идея фундаментального исследования, нарисованная на доске, была преобразована в правильную структуру. Для этого эксперимента давайте выберем относительно сложную структуру - DCGAN вместе с ее функцией потерь - которая может показать полезность различных платформ для отладки больших моделей. Так генератор представлен в самой статье. Можем ли мы сделать лучше с доступом к коду? Здесь мы используем пример кода PyTorch DCGAN.

Печать моделей - 1D

Один из самых быстрых способов получить информацию о модели, независимо от языка, на котором она написана, - это распечатать переменную модели.

print(model)

С DCGAN мы можем независимо распечатать Дискриминатор и Генератор. И получите следующие результаты:

Плюсы: Быстро, интуитивно понятно, мгновенно отображает всю диаграмму.

Минусы: Нет информации о входах, выходах, промежуточных формах и тензорах или представлении функции потерь.

Тензорная плата - 2D

Более продвинутый метод - использовать Tensorboard. Это платформа, которая позволяет отслеживать различные значения в процессе обучения модели, а также сохранять график модели. Доступ к нему можно получить через SummaryWritter.

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
writer.add_graph(netGenerator, noise)

Полученный пользовательский интерфейс доступен через браузер и дает плоскую 2D-визуализацию модели. Каждое из окон операций может быть расширено, чтобы показать больше лежащих в основе тензоров или вычислений.

Плюсы: Можно проверить всю диаграмму. Информация о вычислительных элементах и ​​формах. Полезная мини-карта модели при изучении.

Минусы: Нет информации о представлении функции потерь или промежуточных тензоров. Пользовательский интерфейс неуклюжий.

Эфемарай - 3D

Из трех вариантов наиболее выразительным методом исследования вычислительного графа является Эфемарай. Это интерактивный отладчик, который дает пользователям возможность копаться в различных выходных и вычислительных элементах. Это единственный вариант из трех, который показывает промежуточные тензоры, такие как ядра и карты функций.

import efemarai as ef
for data, target in dataset:    
    # Pause execution & visualize computational graph within
    with ef.scan():
        fake = netGenerator(noise)
        lossD = lossReal + lossFake
        lossG = ...

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

Минусы: необходима бесплатная регистрация pip install пакета.

Заключение

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