В Python есть ли способ использовать networkx для отображения нейронной сети в стандартном формате? - PullRequest
0 голосов
/ 22 октября 2019

Под «стандартным форматом» я подразумеваю, когда входные и выходные узлы находятся в своих собственных отдельных строках со всеми другими скрытыми узлами между ними на изображении. Как вы можете видеть ниже, мои входные узлы - это узлы 0,1 и 2, мой выходной узел - 3, мои скрытые узлы - 4 и 5. Это самый красивый сетевой график, который я могу получить. Я пытаюсь избегать использования керас, потому что это было огромной болью, пытаясь заставить его работать в анаконде.

Я считаю, что было бы проще, если бы я знал название типа графика, который является «стандартным форматом». для отображения нейронных сетей.

Пожалуйста, дайте мне знать, если я пропустил пакет, предназначенный для выполнения этой задачи.

Вот как я теперь могу отобразить сеть:

код для графика:

import networkx as nx

G = nx.MultiDiGraph()
ed = N2.dna.get_conns(weight=True)

G.add_weighted_edges_from(ed)
nx.draw_planar(G,with_labels=True,font_weight='bold')


ed
Out[32]: 
[[0, 3, -1],
 [1, 3, -1],
 [2, 3, -1],
 [0, 4, -1],
 [4, 5, -1],
 [5, 3, 100],
 [2, 4, 10]]

1 Ответ

0 голосов
/ 22 октября 2019

Хотелось бы, чтобы я вас правильно понял.

Возможное решение:

import networkx as nx
from networkx.drawing.nx_agraph import graphviz_layout

G = nx.DiGraph()
ed = [[0, 4, -1],
 [0, 5, -1],
 [1, 4, -1],
 [1, 5, -1],
 [2, 4, -1],
 [2, 5, 10],
 [4, 3, -1],
 [5, 3, 100]]

G.add_weighted_edges_from(ed)
pos = graphviz_layout(G, prog='dot', args="-Grankdir=LR")
nx.draw(G,with_labels=True,pos=pos, font_weight='bold')

enter image description here

...