Під час написання статті / презентації теми, що стосується нейронних мереж, зазвичай візуалізується архітектура мереж.
Які хороші / прості способи візуалізації загальних архітектур автоматично?
Під час написання статті / презентації теми, що стосується нейронних мереж, зазвичай візуалізується архітектура мереж.
Які хороші / прості способи візуалізації загальних архітектур автоматично?
Відповіді:
Якщо нейронна мережа задана у вигляді графіка Tensorflow, то ви можете візуалізувати цей графік за допомогою TensorBoard .
Ось як виглядає MNIST CNN:
Ви можете самостійно додати імена / сфери дії (наприклад, "dropout", "softmax", "fc1", "conv1", "conv2").
Далі йдеться лише про лівий графік. Я ігнорую 4 маленькі графіки правої половини.
Кожне поле являє собою шар з параметрами, які можна дізнатися. Для висновку інформація тече знизу вгору. Еліпси - це шари, які не містять вивчених параметрів.
Колір коробок не має значення.
Я не впевнений у значенні пунктирних невеликих коробок ("градієнти", "Адам", "зберегти").
Нещодавно я створив інструмент для малювання архітектур NN та експорту SVG, який називається NN-SVG
У Caffe ви можете використовувати caffe / draw.py, щоб намалювати протобуфер NetParameter:
У Matlab ви можете використовувати view (net)
Keras.js :
Я б додав візуалізації 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
Існує проект з відкритим кодом під назвою 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).
Ось ще один спосіб - дотнетів , використовуючи Graphviz , сильно натхненний цією публікацією Тіаго Г. Мартінса.
Керас
Модуль keras.utils.vis_utils надає корисні функції для побудови моделі Keras (з використанням graphviz)
Далі показано мережеву модель, що перший прихований шар містить 50 нейронів і очікує 104 вхідних змінних.
plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)
Пакет Python conx
може візуалізувати мережі з активацією за допомогою функції net.picture()
для створення зображень SVG, PNG або PIL таким чином:
Conx побудований на Keras і може читати в моделях Keras. Кольорову карту в кожному банку можна змінити, і вона може відображати всі типи банків.
Більше інформації можна знайти на веб-сайті: http://conx.readthedocs.io/en/latest/
Я працював над візуалізатором нейронної мережі, що перетягується (і більше). Ось приклад візуалізації архітектури, подібної до LeNet. Моделі з вентилятором і вентилятором також досить легко моделюються. Ви можете відвідати веб-сайт за адресою https://math.mit.edu/ennui/
У R nnet
не поставляється з функцією сюжету, але код для цього надається тут .
Крім того , ви можете використовувати більш свіжі і ІМХО краще пакет під назвою , neuralnet
який має plot.neuralnet
функцію, так що ви можете просто зробити:
data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))
neuralnet
використовується не стільки, скільки nnet
через те nnet
, що набагато старший і поставляється з r-cran. Але neuralnet
є більше алгоритмів тренінгу, включаючи пружну зворотну розповсюдження, якої не вистачає навіть у таких пакетах, як Tensorflow, і є набагато більш надійним у виборі гіперпараметрів і має загальні функції.
Існують нові альтернативні зусилля щодо візуалізації нейронної мережі.
Перегляньте ці статті:
Приголомшливі «сканування мозку AI» виявляють те, що машини бачать під час вивчення нових навичок
Всередині «мозку» ШІ - як виглядає машинне навчання?
Ці підходи більшою мірою орієнтовані на візуалізацію роботи нейронної мережі, проте архітектура NN також дещо помітна на отриманих діаграмах.
Приклади:
Насправді не чудовий для паперів, але дуже корисний для показу людям, які не дуже багато знають про нейронні мережі, як може виглядати їхня топологія. Ця бібліотека Javascript (Neataptic) дозволяє візуалізувати вашу мережу:
Ви можете прочитати популярний документ « Розуміння нейронних мереж через глибоку візуалізацію», який обговорює візуалізацію згорткових мереж. Її реалізація не тільки відображає кожен шар, але також зображує активації, ваги, деконволюції та багато інших речей, які глибоко обговорюються в роботі. Це код в caffe'
. Цікава частина полягає в тому, що ви можете замінити заздалегідь підготовлену модель на власну.
Tensorspace-JS - це фантастичний інструмент для 3d-візуалізації мережевої архітектури:
і ось приємний пост про те, як написати програму:
Netscope - мій повсякденний інструмент для моделей Caffe.