Как визуализировать нейронную сеть на Python с помощью Graphviz?

Опубликовано: 25 Декабря, 2021

В этой статье мы увидим, как построить (визуализировать) нейронную сеть на Python с помощью Graphviz. Graphviz - это модуль Python, представляющий собой программное обеспечение для визуализации графиков с открытым исходным кодом. Визуализация широко популярна среди исследователей. Он представляет структурную информацию в виде диаграмм абстрактных графов и сетей, что означает, что вам нужно только предоставить только текстовое описание графа, касающееся его топологической структуры, и это будет автоматически читать и создавать изображение.

Установка:

Для оконного терминала:

 pip install graphviz

Для терминала анаконды:

 conda install -c anaconda graphviz

Построение простого графика с помощью Graphviz

Подход:

  • Модуль импорта.
  • Создайте новый объект Diagraph.
  • Добавьте node () и edge () в объект графа.
  • Сохраните исходный код с помощью объекта render ().

Ниже представлена реализация:

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 )

Выход:

 Graph.png

Мы можем проверить сгенерированный исходный код с помощью методов dot.source:

Python3

print (dot.source)

Выход:

 // Круглый график
digraph {
    А [label = Alex]
    Б [label = Ришу]
    C [label = Mohe]
    D [label = Satyam]
    А -> В
    А -> С
    А -> D
    B -> C [ограничение = ложь]
    C -> D [ограничение = ложь]
}

Построение (визуализация) нейронной сети с помощью Graphviz

Здесь мы используем исходный код для реализации, который мы видим в приведенных выше примерах:

Обсудим подход:

  • Создайте объект орграфа.
  • Определите направление графика с помощью rankdir.
  • Создайте подграф со следующими элементами:
    • Установите цвет.
    • Задайте свойства узла.
    • Установить уровень подграфа
  • Создайте край между объектами с помощью ( -> ).

Этот исходный код необходимо сохранить в файле .txt (myfile.txt) и запустить `dot -Tpng -O myfile.txt` из командной строки, чтобы получить рисунок в формате .png с диаграммой.

Пример 1:

 digraph G {

        rankdir = LR
    шлицы = линия
        
        узел [fixedsize = true, label = ""];

        subgraph cluster_0 {
        цвет = белый;
        узел [стиль = сплошной, цвет = синий4, форма = круг];
        х1 х2 х3 х4;
        label = "слой 1 (входной слой)";
    }

    subgraph cluster_1 {
        цвет = белый;
        узел [стиль = сплошной, цвет = красный2, форма = круг];
        а12 а22 а32;
        label = "слой 2 (скрытый слой)";
    }

    subgraph cluster_2 {
        цвет = белый;
        узел [style = solid, color = seagreen2, shape = circle];
        О;
        label = "слой 3 (выходной слой)";
    }

        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

}

Запустите это в терминал:

 точка -Tpng -O myfile.txt

Выход:

Пример 2:

 digraph G {

        rankdir = LR
    шлицы = линия
        nodesep = .05;
        
        узел [label = ""];
        
        subgraph cluster_0 {
        цвет = белый;
                узел [стиль = сплошной, цвет = синий4, форма = круг];
        х1 х2 х3;
        label = "слой 1";
    }

    subgraph cluster_1 {
        цвет = белый;
        узел [стиль = сплошной, цвет = красный2, форма = круг];
        а12 а22 а32 а42 а52;
        label = "слой 2";
    }

    subgraph cluster_2 {
        цвет = белый;
        узел [стиль = сплошной, цвет = красный2, форма = круг];
        а13 а23 а33 а43 а53;
        label = "слой 3";
    }

    subgraph cluster_3 {
        цвет = белый;
        узел [style = solid, color = seagreen2, shape = circle];
        O1 O2 O3 O4;
        label = "слой 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;

        а12 -> а13
        а22 -> а13
        а32 -> а13
        а42 -> а13
        а52 -> а13

        а12 -> а23
        а22 -> а23
        а32 -> а23
        а42 -> а23
        а52 -> а23

        а12 -> а33
        а22 -> а33
        а32 -> а33
        а42 -> а33
        а52 -> а33

        а12 -> а43
        а22 -> а43
        а32 -> а43
        а42 -> а43
        а52 -> а43

        а12 -> а53
        а22 -> а53
        а32 -> а53
        а42 -> а53
        а52 -> а53

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

}

Выход:

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.