визуализация сети pytorch (7): PlotNeuralNet

Введение в PlotNeuralNet

PlotNeuralNet — это инструмент для визуализации нейронных сетей на GitHub. Он использует Python для преобразования структуры сети, определенной в файле .py, в файл .tex. Наконец, ее можно преобразовать в .pdf и другие формы с помощью таких инструментов, как TeXworks для отобразить структуру сети.

1. Установите Texlive

Нажмите http://www.tug.org/texlive/ , чтобы ввести ссылку для загрузки и выбрать DVD.

Вставьте сюда описание изображения
选择 загрузка ISO-образа TeX Live и запись собственного DVD。

Вставьте сюда описание изображения
Выберите загрузку с ближайшего зеркала CTAN.

Вставьте сюда описание изображения
Выберите texlive2021.iso для загрузки.

Вставьте сюда описание изображения

Загрузите файл образа ISO, дважды щелкните его, чтобы открыть, а затем дважды щелкните файл install-tl-windows.bat, чтобы войти в мастер установки. Обратите внимание на изменение пути установки, отметив опцию установки фронтальной панели TeXworks. конец, а затем приходится долго ждать процесса установки.

Вставьте сюда описание изображения

2. Загрузите набор инструментов PlotNeuralNet.

ссылка на github: https://github.com/HarisIqbal88/PlotNeuralNet

3. Запустите встроенный тестовый код.

Используйте pycharm или другой редактор Python, чтобы открыть проект PlotNeuralNet, введите путь к pyexamples, откройте файл unet.py и запустите его напрямую. В это время по текущему пути будет создан файл unet.tex.

Вставьте сюда описание изображения
Откройте программу-редактор TeXworks, выберите файл, чтобы открыть файл unet.tex по пути, который вы только что открыли.

Вставьте сюда описание изображения
Нажмите зеленую стрелку, чтобы запустить, и файл unet.pdf будет создан и открыт напрямую. Если отображение неполное, вы можете нажать, чтобы адаптироваться к странице или увеличить окно. Результаты следующие.

Вставьте сюда описание изображения
Видно, что выходная сетевая диаграмма очень красива, и H, W и C каждого слоя могут быть определены сами по себе.

4. Запустите собственный тестовый код.

Одним из недостатков PlotNeuralNet является то, что он напрямую генерируется и определяется пользователями с помощью кода. С ним сложно работать и он не очень практичен. Однако он лучше подходит для создания бумажных иллюстраций. Давайте кратко представим, как его использовать с помощью специального тестового кода (аналогично U-Net):

import sys
sys.path.append('../')
from pycore.tikzeng import *
# 自定义一个网络结构
arch = [
    to_head('..'),
    to_cor(),
    to_begin(),

    # 写入网络结构,其他代码不要改动
    to_Conv("conv1", 64, 3, offset="(0,0,0)", to="(0,0,0)", height=128, depth=128, width=3),
    # 参数列表:名字;左下角数字大小和厚度;相对于上一幅图的 x,y,z 坐标;对应放在 conv1 的 东(右边)边;高度;宽度;厚度
    to_Conv("conv2", 64, 32, offset="(5,0,0)", to="(conv1-east)", height=64, depth=64, width=32),
    to_Conv("conv3", 64, 32, offset="(5,0,0)", to="(conv2-east)", height=32, depth=32, width=64),
    to_Conv("conv4", 64, 32, offset="(5,0,0)", to="(conv3-east)", height=16, depth=16, width=128),
    to_Conv("conv5", 64, 32, offset="(5,0,0)", to="(conv4-east)", height=16, depth=16, width=128),
    to_Conv("conv6", 64, 32, offset="(5,0,0)", to="(conv5-east)", height=32, depth=32, width=64),
    to_Conv("conv7", 64, 32, offset="(5,0,0)", to="(conv6-east)", height=64, depth=64, width=32),
    to_Conv("conv8", 64, 3, offset="(5,0,0)", to="(conv7-east)", height=128, depth=128, width=3),
    # 箭头连接
    to_connection("conv1", "conv2"),
    to_connection("conv2", "conv3"),
    to_connection("conv3", "conv4"),
    to_connection("conv4", "conv5"),
    to_connection("conv5", "conv6"),
    to_connection("conv6", "conv7"),
    to_connection("conv7", "conv8"),
    # 跳跃连接
    to_skip("conv2", "conv7"),

    to_end()
    ]


def main():
    namefile = str(sys.argv[0]).split('.')[0]
    to_generate(arch, namefile + '.tex')


if __name__ == '__main__':
    main()

результат операции:

Вставьте сюда описание изображения

5. Вывод

  • В обычных обстоятельствах, когда мы смотрим на структуру пользовательской сети, мы в основном смотрим на методы соединения между модулями, изменения карты функций, изменения параметров и т. д., тогда как PlotNeuralNet — это инструмент, который полностью отделен от реально существующей сети. и все параметры в нем настраиваются.
  • Хотя диаграмма структуры нейронной сети, созданная PlotNeuralNet, выглядит лучше, чем другие инструменты, начать работу с ней относительно сложно, и есть только несколько простых соединений и других операций. Чтобы познакомиться с относительно сложной сетью, требуется гораздо больше времени, чем для ее использования. это непосредственно, чтобы нарисовать диаграмму.время.
  • Я могу только сказать, что вы можете попробовать это при создании бумажных иллюстраций. В других ситуациях это совершенно не нужно. Я считаю, что должно быть какое-то программное обеспечение, которое может рисовать более красивые диаграммы нейронных сетей, чем PlotNeuralNet.

おすすめ

転載: blog.csdn.net/Wenyuanbo/article/details/118857671