Рисование сверточных нейронных сетей

Есть ли какое-либо программное обеспечение, используемое для рисования рисунков в научных статьях, описывающих структуру нейронных сетей (в частности, сверточных сетей)?

Ближайшим решением к тому, что я хочу, является библиотека TikZ LaTeX, которая может создавать подобные диаграммы с описанием сети с использованием кода (она не может обрабатывать сверточные слои):

тикз-нейронная сеть Источник

Другое программное обеспечение, которое описывает структуру сети, но не визуализирует ее в 3D:

Диаграммы, которые я хочу построить, следуют аналогичному шаблону, поэтому мне интересно узнать, существует ли более специализированное программное обеспечение, чем GIMP/GraphViz/Gephi/InkScape или даже Powerpoint для достижения этой цели. Было бы здорово, если бы его можно было программировать, как TikZ.

Вот несколько примеров фигур, которые я хотел бы построить (с их источниками ниже):

введите описание изображения здесь Источник

Ленет5 Источник

ДипФейс Источник

Я уверен, что tikz может построить такой график, если приложить достаточно усилий — вы можете найти несколько замечательных примеров использования tikz на TeX-LaTeX и texample . Я мог видеть, что формат ввода может быть не таким, как вам хотелось бы. Не могли бы вы уточнить, что вы подразумеваете под «он не может обрабатывать сверточные слои»?
Tikz было бы здорово, хотя я не нашел примера. Бит сверточных слоев — это просто многослойные квадраты или прямоугольные призмы в примерах.
Вы хотите программно управлять диаграммой, или вы в порядке, выкладывая диаграмму с помощью графического интерфейса? Также вы хотите это на определенной платформе? 3D тоже обязательно?
Мне нужно иметь возможность визуализировать 3D, как показано в примерах (не нужно иметь возможность просматривать схему под разными углами). Графический интерфейс хорош, если можно просто вернуться и удалить слой или добавить слой, не занимая слишком много времени, например, во втором примере диаграммы с буквой A — я хочу удалить слои F6 и S2, я должен быть в состоянии сделать это путем удаления и связи будут работать сами по себе.

Ответы (3)

Я написал простой скрипт на Python для рисования коннета с настраиваемыми параметрами. https://github.com/gwding/draw_convnet

draw_convnet Пример изображения

Это может быть полезно для вас, если вам просто нужна простая/ненавороченная иллюстрация. Он копирует стиль рисунка 2 в «обучении на основе градиента, применяемом к распознаванию документов».

Спасибо, что нашли время, чтобы написать это и поделиться им.
@gwding Спасибо, сэр, за этот полезный пост. Я пытаюсь поиграть с параметрами в коде, но получаю ошибки, связанные с выходом за пределы индекса. У вас есть более наглядное руководство по изменению этих параметров?
@IbrahimAmer У меня нет письменных инструкций. если вы можете поместить свое сообщение об ошибке в проблему github в этом репо, я мог бы помочь
@gwding Как вы получили размеры 18x18 при выполнении сверток с ядром 5x5? Я предполагаю, что текст под каждым шагом обозначает, что там выполняется для получения следующего изображения, что можно сделать с помощью шага Flatten.
@AleksandarJovanovic размер будет зависеть от размера ядра, размера шага и отступов. точные настройки не помню. но это скорее всего из-за шага
я изменил вход на 64x64, и он перекрывается со вторым слоем. Как это исправить ?
@kong, ты можешь попробовать поиграть с числами в x_diff_list

Я также написал для этого инструмент в браузере: NN-SVG , и вы можете найти исходный код здесь . Выберите раскладку FCNN, раскладку LeNet или раскладку AlexNet.

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

у вас есть исходник на гитхабе? надо раскошелиться, спасибо :)
Он зависает ПК, когда я пытаюсь FFNN с размером входных слоев 300, 256, 128

Это здорово: https://github.com/HarisIqbal88/PlotNeuralNet . Хорошо решает мою проблему и написан на python/tex.