¿Cómo visualizar una red neuronal en Python usando Graphviz?

En este artículo, vamos a ver cómo trazar (visualizar) una red neuronal en python usando Graphviz. Graphviz es un módulo de Python que es un software de visualización de gráficos de código abierto. Es muy popular entre los investigadores hacer visualizaciones. Representa información estructural como diagramas de gráficos abstractos y redes, lo que significa que solo necesita proporcionar una descripción textual del gráfico con respecto a su estructura topológica y esto leerá y creará una imagen automáticamente.

Instalación:

Para terminal de ventana:

pip install graphviz

Para terminal anaconda:

conda install -c anaconda graphviz

Trazar un gráfico simple con Graphviz

Acercarse:

  • Módulo de importación.
  • Crea un nuevo objeto de Diagraph.
  • Agregue node() y edge() en el objeto de gráfico.
  • Guarde el código fuente con el objeto render().

A continuación se muestra la implementación:

Python3

# import module
from graphviz import Digraph
  
# instantiating object
dot = Digraph(comment='A Round Graph')
  
# Adding nodes
dot.node('A', 'Alex')
dot.node('B', 'Rishu')
dot.node('C', 'Mohe')
dot.node('D', 'Satyam')
  
# Adding edges
dot.edges(['AB', 'AC', 'AD'])
dot.edge('B', 'C', constraint = 'false')
dot.edge('C', 'D', constraint = 'false')
  
# saving source code
dot.format = 'png'
dot.render('Graph', view = True) 

Producción:

Graph.png

Podemos comprobar t

Python3

print(dot.source)

Producción:

// A Round Graph
digraph {
    A [label=Alex]
    B [label=Rishu]
    C [label=Mohe]
    D [label=Satyam]
    A -> B
    A -> C
    A -> D
    B -> C [constraint=false]
    C -> D [constraint=false]
}

Trazar (visualizar) una red neuronal con Graphviz

Aquí estamos usando el código fuente para la implementación que vemos en los ejemplos anteriores:

Discutamos el enfoque:

  • Cree un objeto dígrafo.
  • Defina la dirección del gráfico utilizando rankdir.
  • Crea un subgrafo con las siguientes cosas:
    • Establecer color.
    • Establecer propiedades de Node.
    • Establecer el nivel del subgráfico
  • Cree el borde entre el objeto con ( -> ).

Este código fuente debe guardarse en un archivo .txt (myfile.txt) y el

Ejemplo 1:

digraph G {

        rankdir=LR
    splines=line
        
        node [fixedsize=true, label=""];

        subgraph cluster_0 {
        color=white;
        node [style=solid,color=blue4, shape=circle];
        x1 x2 x3 x4;
        label = "layer 1 (Input layer)";
    }

    subgraph cluster_1 {
        color=white;
        node [style=solid,color=red2, shape=circle];
        a12 a22 a32;
        label = "layer 2 (hidden layer)";
    }

    subgraph cluster_2 {
        color=white;
        node [style=solid,color=seagreen2, shape=circle];
        O;
        label="layer 3 (output layer)";
    }

        x1 -> a12;
        x1 -> a22;
        x1 -> a32;
        x2 -> a12;
        x2 -> a22;
        x2 -> a32;
        x3 -> a12;
        x3 -> a22;
        x3 -> a32;
    x4 -> a12;
        x4 -> a22;
        x4 -> a32;
    

        a12 -> O
        a22 -> O
        a32 -> O

}

Ejecuta esto en la terminal:

dot -Tpng -O myfile.txt

Producción:

Ejemplo 2:

digraph G {

        rankdir=LR
    splines=line
        nodesep=.05;
        
        node [label=""];
        
        subgraph cluster_0 {
        color=white;
                node [style=solid,color=blue4, shape=circle];
        x1 x2 x3;
        label = "layer 1";
    }

    subgraph cluster_1 {
        color=white;
        node [style=solid,color=red2, shape=circle];
        a12 a22 a32 a42 a52;
        label = "layer 2";
    }

    subgraph cluster_2 {
        color=white;
        node [style=solid,color=red2, shape=circle];
        a13 a23 a33 a43 a53;
        label = "layer 3";
    }

    subgraph cluster_3 {
        color=white;
        node [style=solid,color=seagreen2, shape=circle];
        O1 O2 O3 O4;
        label="layer 4";
    }

        x1 -> a12;
        x1 -> a22;
        x1 -> a32;
        x1 -> a42;
        x1 -> a52;

        x2 -> a12;
        x2 -> a22;
        x2 -> a32;
        x2 -> a42;
        x2 -> a52;
 
        x3 -> a12;
        x3 -> a22;
        x3 -> a32;
        x3 -> a42;
        x3 -> a52;

        a12 -> a13
        a22 -> a13
        a32 -> a13
        a42 -> a13
        a52 -> a13

        a12 -> a23
        a22 -> a23
        a32 -> a23
        a42 -> a23
        a52 -> a23

        a12 -> a33
        a22 -> a33
        a32 -> a33
        a42 -> a33
        a52 -> a33

        a12 -> a43
        a22 -> a43
        a32 -> a43
        a42 -> a43
        a52 -> a43

        a12 -> a53
        a22 -> a53
        a32 -> a53
        a42 -> a53
        a52 -> a53

        a13 -> O1
    a23 -> O2
    a33 -> O3
    a43 -> O4
        a53 -> O4

}

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *