Al escribir un artículo / hacer una presentación sobre un tema que trata sobre redes neuronales, generalmente se visualiza la arquitectura de redes.
¿Cuáles son las formas buenas / simples de visualizar arquitecturas comunes automáticamente?
machine-learning
neural-network
deep-learning
visualization
Martin Thoma
fuente
fuente
Respuestas:
Tensorflow, Keras, MXNet, PyTorch
Si la red neuronal se proporciona como un gráfico de Tensorflow, puede visualizar este gráfico con TensorBoard .
Así es como se ve el MNIST CNN:
Puede agregar nombres / ámbitos (como "abandono", "softmax", "fc1", "conv1", "conv2") usted mismo.
Interpretación
Lo siguiente es solo sobre el gráfico de la izquierda. Ignoro los 4 pequeños gráficos en la mitad derecha.
Cada cuadro es una capa con parámetros que se pueden aprender. Por inferencia, la información fluye de abajo hacia arriba. Las elipses son capas que no contienen parámetros aprendidos.
El color de las cajas no tiene sentido.
No estoy seguro del valor de las pequeñas cajas discontinuas ("gradientes", "Adam", "guardar").
fuente
Recientemente creé una herramienta para dibujar arquitecturas NN y exportar SVG, llamada NN-SVG
fuente
En Caffe puedes usar caffe / draw.py para dibujar el protobuffer NetParameter:
En Matlab, puede usar view (net)
Keras.js :
fuente
Agregaría visualizaciones ASCII usando keras-sequential-ascii (descargo de responsabilidad: soy el autor).
Una pequeña red para CIFAR-10 (de este tutorial ) sería:
Para VGG16 sería:
fuente
Hay un proyecto de código abierto llamado Netron
fuente
Aquí hay otra forma: dotnets , usando Graphviz , fuertemente inspirado en esta publicación de Thiago G. Martins.
fuente
Keras
El módulo keras.utils.vis_utils proporciona funciones de utilidad para trazar un modelo de Keras (usando graphviz)
A continuación se muestra un modelo de red en el que la primera capa oculta tiene 50 neuronas y espera 104 variables de entrada.
fuente
El paquete Python
conx
puede visualizar redes con activaciones con la funciónnet.picture()
para producir imágenes SVG, PNG o PIL como esta:Conx se basa en Keras y puede leer en los modelos de Keras. El mapa de colores en cada banco se puede cambiar y puede mostrar todos los tipos de bancos.
Se puede encontrar más información en: http://conx.readthedocs.io/en/latest/
fuente
He estado trabajando en un visualizador de redes neuronales de arrastrar y soltar (y más). Aquí hay un ejemplo de visualización para una arquitectura similar a LeNet. Los modelos con salida y entrada también se modelan con bastante facilidad. Puede visitar el sitio web en https://math.mit.edu/ennui/
fuente
En R,
nnet
no viene con una función de trazado, pero el código para eso se proporciona aquí .Alternativamente, puede usar el paquete más reciente e IMHO mejor llamado
neuralnet
que presenta unaplot.neuralnet
función, por lo que puede hacer lo siguiente:neuralnet
no se usa tanto comonnet
porquennet
es mucho más antiguo y se envía con r-cran. Peroneuralnet
tiene más algoritmos de entrenamiento, incluida la retropropagación resistente que falta incluso en paquetes como Tensorflow, y es mucho más robusta para las opciones de hiperparámetros, y tiene más características en general.fuente
Hay algunos esfuerzos alternativos novedosos en la visualización de redes neuronales.
Por favor vea estos artículos:
Impresionantes 'escaneos cerebrales de IA' revelan lo que las máquinas ven a medida que aprenden nuevas habilidades
Dentro de un 'cerebro' de IA: ¿cómo es el aprendizaje automático?
Estos enfoques están más orientados a visualizar el funcionamiento de la red neuronal, sin embargo, la arquitectura NN también es algo visible en los diagramas resultantes.
Ejemplos:
fuente
No es seguro para los documentos, pero es muy útil para mostrar a las personas que no saben mucho sobre redes neuronales cuál es su topología. Esta biblioteca Javascript (Neataptic) le permite visualizar su red:
fuente
Puede leer el popular artículo Comprender las redes neuronales a través de la visualización profunda que trata sobre la visualización de redes convolucionales. Su implementación no solo muestra cada capa, sino que también muestra las activaciones, los pesos, las deconvoluciones y muchas otras cosas que se analizan en profundidad en el documento. Su código está adentro
caffe'
. La parte interesante es que puede reemplazar el modelo pre-entrenado con el suyo.fuente
Tensorspace-JS es una herramienta fantástica para la visualización en 3D de la arquitectura de red:
https://tensorspace.org/
y aquí hay una buena publicación sobre cómo escribir un programa:
https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8
fuente
Netscope es mi herramienta diaria para los modelos Caffe.
fuente