Як ви візуалізуєте архітектури нейронної мережі?


79

Під час написання статті / презентації теми, що стосується нейронних мереж, зазвичай візуалізується архітектура мереж.

Які хороші / прості способи візуалізації загальних архітектур автоматично?




1
Я написав прості діаграми зведених нейронних мереж із опитом підходів до глибокої візуалізації навчання (як вручну, так і в автоматичному режимі). Я отримав багато натхнення та посилань, з цієї теми - thx!
Піотр Мігдал

Відповіді:


25

Tensorflow, Keras, MXNet, PyTorch

Якщо нейронна мережа задана у вигляді графіка Tensorflow, то ви можете візуалізувати цей графік за допомогою TensorBoard .

Ось як виглядає MNIST CNN:

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

Ви можете самостійно додати імена / сфери дії (наприклад, "dropout", "softmax", "fc1", "conv1", "conv2").

Інтерпретація

Далі йдеться лише про лівий графік. Я ігнорую 4 маленькі графіки правої половини.

Кожне поле являє собою шар з параметрами, які можна дізнатися. Для висновку інформація тече знизу вгору. Еліпси - це шари, які не містять вивчених параметрів.

Колір коробок не має значення.

Я не впевнений у значенні пунктирних невеликих коробок ("градієнти", "Адам", "зберегти").


це добре, я намагаюся уникати таких назв, як conv1, conv2 і т. д., я хочу зробити все ім'я conv пізніше як CONV, як це робити ??
Судіп Дас

+1. Це не тільки для TF: MXNet та Pytorch також мають підтримку
Якуб Бартчук

@SudipDas Ви можете додати імена до коду до шарів, які відображатимуться під час створення тексту.
Бен

Як я покажу ім'я кожного шару як "CONV", якщо я напишу його як "CONV" кожного шару, то я отримаю помилку, тому що кожен шар повинен мати унікальну назву як правила tf, Але я хочу знати, це чи є якийсь інший спосіб подолати цю проблему ?? @Ben
Судіп Дас

1
@onof Я виправив посилання
Мартін Тома

22

Нещодавно я створив інструмент для малювання архітектур NN та експорту SVG, який називається NN-SVG

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


1
Завантажити SVG не працює
зображення

працює для мене 1/23/19. Якщо у вас все ще виникає проблема, будь ласка, не соромтесь відкривати її.
Олексій Ленейл

1
це єдина правильна відповідь
ArtificiallyIntelligence

дивовижний інструмент. Однак я помітив, що в стилі AlexNet розміри тензорів були помилково представлені (розміри ширини та висоти)
FlySoFast


11

Я б додав візуалізації ASCII, використовуючи кераси-послідовну-ascii (відмова від відповідальності: я автор).

Невелика мережа для CIFAR-10 (з цього підручника ) буде:

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

           Input   #####     32   32    3
          Conv2D    \|/  -------------------       896     2.1%
            relu   #####     30   30   32
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####     15   15   32
          Conv2D    \|/  -------------------     18496    43.6%
            relu   #####     13   13   64
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####      6    6   64
         Flatten   ||||| -------------------         0     0.0%
                   #####        2304
           Dense   XXXXX -------------------     23050    54.3%
         softmax   #####          10

Для VGG16 це було б:

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

          Input   #####      3  224  224
     InputLayer     |   -------------------         0     0.0%
                  #####      3  224  224
  Convolution2D    \|/  -------------------      1792     0.0%
           relu   #####     64  224  224
  Convolution2D    \|/  -------------------     36928     0.0%
           relu   #####     64  224  224
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####     64  112  112
  Convolution2D    \|/  -------------------     73856     0.1%
           relu   #####    128  112  112
  Convolution2D    \|/  -------------------    147584     0.1%
           relu   #####    128  112  112
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    128   56   56
  Convolution2D    \|/  -------------------    295168     0.2%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    256   28   28
  Convolution2D    \|/  -------------------   1180160     0.9%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512    7    7
        Flatten   ||||| -------------------         0     0.0%
                  #####       25088
          Dense   XXXXX ------------------- 102764544    74.3%
           relu   #####        4096
          Dense   XXXXX -------------------  16781312    12.1%
           relu   #####        4096
          Dense   XXXXX -------------------   4097000     3.0%
        softmax   #####        1000

11

Існує проект з відкритим кодом під назвою Netron

Netron - це переглядач моделей нейронної мережі, глибокого навчання та машинного навчання.

Netron підтримує ONNX (.onnx, .pb), Keras (.h5, .keras), CoreML (.mlmodel) та TensorFlow Lite (.tflite). Netron має експериментальну підтримку Caffe (.caffemodel), Caffe2 (predict_net.pb), MXNet (-symbol.json), TensorFlow.js (model.json, .pb) та TensorFlow (.pb, .meta).

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



8

Керас

Модуль keras.utils.vis_utils надає корисні функції для побудови моделі Keras (з використанням graphviz)

Далі показано мережеву модель, що перший прихований шар містить 50 нейронів і очікує 104 вхідних змінних.

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)

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


Чи можу я використовувати його у сумісному форматі LaTex?
pushpen.paul

8

Пакет Python conxможе візуалізувати мережі з активацією за допомогою функції net.picture()для створення зображень SVG, PNG або PIL таким чином:

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

Conx побудований на Keras і може читати в моделях Keras. Кольорову карту в кожному банку можна змінити, і вона може відображати всі типи банків.

Більше інформації можна знайти на веб-сайті: http://conx.readthedocs.io/en/latest/


6

Я працював над візуалізатором нейронної мережі, що перетягується (і більше). Ось приклад візуалізації архітектури, подібної до LeNet. Візуалізація архітектури, подібної до LeNet Моделі з вентилятором і вентилятором також досить легко моделюються. Ви можете відвідати веб-сайт за адресою https://math.mit.edu/ennui/


мій браузер продовжує
виходити з

1
Дякуємо, що перевірили це. Так, ця помилка з’явилася нещодавно і, здається, є наслідком деяких останніх змін у WebGL в Chrome. На Firefox все повинно працювати. Я оновлю вас, коли дізнаюсь більше.
Джессі

tks, ваш візуалізатор дивовижний, виглядає більше, ніж дитячий майданчик :)
datdinhquoc

1
Дякую! Повідомте мене, якщо у вас є проблеми чи ідеї. У нас теж веселі речі, такі як генерація коду!
Джессі

5

У R nnetне поставляється з функцією сюжету, але код для цього надається тут .

Крім того , ви можете використовувати більш свіжі і ІМХО краще пакет під назвою , neuralnetякий має plot.neuralnetфункцію, так що ви можете просто зробити:

data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))

нейроннет

neuralnetвикористовується не стільки, скільки nnetчерез те nnet, що набагато старший і поставляється з r-cran. Але neuralnetє більше алгоритмів тренінгу, включаючи пружну зворотну розповсюдження, якої не вистачає навіть у таких пакетах, як Tensorflow, і є набагато більш надійним у виборі гіперпараметрів і має загальні функції.


Ви повинні додати оновлене посилання на код NNet в R beckmw.wordpress.com/2013/11/14/…
wacax

4

Існують нові альтернативні зусилля щодо візуалізації нейронної мережі.

Перегляньте ці статті:

Приголомшливі «сканування мозку AI» виявляють те, що машини бачать під час вивчення нових навичок

Всередині «мозку» ШІ - як виглядає машинне навчання?

Ці підходи більшою мірою орієнтовані на візуалізацію роботи нейронної мережі, проте архітектура NN також дещо помітна на отриманих діаграмах.

Приклади:

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

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

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

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


21
Поясніть, будь ласка, що ми бачимо тут. Це виглядає красиво, але я не розумію, як вигадливі зображення підтримують розуміння роботи мережі.
Мартін Тома

Мені не подобається ваше зневажливе використання терміна "фантазійні образи". @Martin
VividD

9
Я не мав на увазі напасти на вас, але ваша надмірно захисна відповідь, фактично не відповідаючи на моє питання, говорить сама за себе. - Я додав частину "інтерпретації" до діаграми "коробки лего".
Мартін Тома

1
До речі: Друга ланка мертва.
Мартін Тома

4
@MartinThoma Очевидно, це мистецтво даних, а не дані viz (відео lisacharlotterost.github.io/2015/12/19/… ).
Пьотр Мігдал

3

Насправді не чудовий для паперів, але дуже корисний для показу людям, які не дуже багато знають про нейронні мережі, як може виглядати їхня топологія. Ця бібліотека Javascript (Neataptic) дозволяє візуалізувати вашу мережу:

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


3

Ви можете прочитати популярний документ « Розуміння нейронних мереж через глибоку візуалізацію», який обговорює візуалізацію згорткових мереж. Її реалізація не тільки відображає кожен шар, але також зображує активації, ваги, деконволюції та багато інших речей, які глибоко обговорюються в роботі. Це код в caffe'. Цікава частина полягає в тому, що ви можете замінити заздалегідь підготовлену модель на власну.


2

Tensorspace-JS - це фантастичний інструмент для 3d-візуалізації мережевої архітектури:

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

https://tensorspace.org/

і ось приємний пост про те, як написати програму:

https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8


Чи можете ви надати посилання на цей інструмент?
Пьотр Мігдал

1
@PiotrMigdal Я оновив відповідь.
Алі Мірзай

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.