2013-03-31 50 views
0

我嘗試使用的Graphviz獲得一個基本的神經網絡的狀態的畫面呈現graphviz的。輸入層有14個神經元,輸出層只有一個神經元。人們可以選擇隱藏層的數量以及每層中的神經元數量。通常,只有一個隱藏層。雖然這個圖層中的神經元數量可能相當大(如1000)。但是,出於演示的目的,我只需要像5元(我知道我永遠也不會得到有用的圖片爲數以百計的神經細胞)。我想:需要幫助改善神經網絡基本

  • 收件每個神經元
  • 之間的邊緣(連接)的重量修改邊緣的厚度根據其重量
  • 也許標記每個層

關於厚度,我知道我可以使用「筆寬」。我也瞭解羣集,這可以幫助限制每個圖層並對它們進行標記。我的主要問題,到目前爲止,是有太多的邊緣,輸入層(14個神經元)和隱藏層之間,用於Graphiz以產生清晰的畫面。如果我添加標籤來顯示連接的權重,那更糟。 我覺得把我的輸入和隱藏層之間更多的空間可以提高渲染的可讀性,但我沒有找到如何做到這一點,儘管長期的研究。

這是怎麼樣子的時刻: Current rendering of the neural network, without weights

這裏是自動生成的點代碼,這幅畫的背後:

digraph graphname { 
0.0 -> 1.0; 
0.1 -> 1.0; 
0.2 -> 1.0; 
0.3 -> 1.0; 
0.4 -> 1.0; 
0.5 -> 1.0; 
0.6 -> 1.0; 
0.7 -> 1.0; 
0.8 -> 1.0; 
0.9 -> 1.0; 
0.10 -> 1.0; 
0.11 -> 1.0; 
0.12 -> 1.0; 
0.13 -> 1.0; 
0.0 -> 1.1; 
0.1 -> 1.1; 
0.2 -> 1.1; 
0.3 -> 1.1; 
0.4 -> 1.1; 
0.5 -> 1.1; 
0.6 -> 1.1; 
0.7 -> 1.1; 
0.8 -> 1.1; 
0.9 -> 1.1; 
0.10 -> 1.1; 
0.11 -> 1.1; 
0.12 -> 1.1; 
0.13 -> 1.1; 
0.0 -> 1.2; 
0.1 -> 1.2; 
0.2 -> 1.2; 
0.3 -> 1.2; 
0.4 -> 1.2; 
0.5 -> 1.2; 
0.6 -> 1.2; 
0.7 -> 1.2; 
0.8 -> 1.2; 
0.9 -> 1.2; 
0.10 -> 1.2; 
0.11 -> 1.2; 
0.12 -> 1.2; 
0.13 -> 1.2; 
0.0 -> 1.3; 
0.1 -> 1.3; 
0.2 -> 1.3; 
0.3 -> 1.3; 
0.4 -> 1.3; 
0.5 -> 1.3; 
0.6 -> 1.3; 
0.7 -> 1.3; 
0.8 -> 1.3; 
0.9 -> 1.3; 
0.10 -> 1.3; 
0.11 -> 1.3; 
0.12 -> 1.3; 
0.13 -> 1.3; 
0.0 -> 1.4; 
0.1 -> 1.4; 
0.2 -> 1.4; 
0.3 -> 1.4; 
0.4 -> 1.4; 
0.5 -> 1.4; 
0.6 -> 1.4; 
0.7 -> 1.4; 
0.8 -> 1.4; 
0.9 -> 1.4; 
0.10 -> 1.4; 
0.11 -> 1.4; 
0.12 -> 1.4; 
0.13 -> 1.4; 
1.0 -> 2.0; 
1.1 -> 2.0; 
1.2 -> 2.0; 
1.3 -> 2.0; 
1.4 -> 2.0; 
} 

在這段代碼中,神經元的編號是這樣的: LAYER_NUMBER.NEURON_NUMBER。 請注意,神經元不以正確的順序出現在圖片中,我也沒有解決的問題...

感謝您的幫助。

回答

0

下面是一個包含幾個不同的想法的圖:

ranksep增加「行列」之間的距離。 裕度使節點更大。 (可能有更好的方法來做到這一點。)

爲每個節點着色,並讓該節點的每條邊都使用相同的色相。爲了便於閱讀,您可以使節點更輕,邊緣色調更暗。不要擔心使用顏色名稱,因爲它支持#rrggbb表示法。

我使用彩色發現這樣大大增加了視覺清晰度複雜的圖形。這是很容易遵循的邊緣時,它是彩色的,如果事情具有低重量,它可以由兩種幾乎不可見或完全不可見。

這種着色的另一個附加好處是它可以迴應染色真正神經元的方法。看到這個靈感http://neuroimages.tumblr.com

digraph graphname { 
graph [rankdir="LR" ranksep="3.0"] 
node [style=filled]; 
edge [penwidth="0.5" color="#e0e0e0"]; 

0.1 [fillcolor="cadetblue"]; 
0.2 [fillcolor="coral"]; 
0.3 [fillcolor="green"]; 
0.4 [fillcolor="gold"]; 
0.6 [fillcolor="cyan"]; 

1.0 [margin=0.4]; 
1.1 [margin=0.4]; 
1.2 [margin=0.4]; 
1.3 [margin=0.4]; 
1.4 [margin=0.4]; 

0.0 -> 1.0; 
0.1 -> 1.0 [color="cadetblue1" penwidth="1"]; 
0.2 -> 1.0 [color="coral2" penwidth="2"]; 
0.3 -> 1.0 [color="green3" penwidth="6"]; 
0.4 -> 1.0 [color="gold4" penwidth="8"]; 
0.5 -> 1.0; 
0.6 -> 1.0; 
0.7 -> 1.0; 
0.8 -> 1.0; 
0.9 -> 1.0; 
0.10 -> 1.0; 
0.11 -> 1.0; 
0.12 -> 1.0; 
0.13 -> 1.0; 
0.0 -> 1.1; 
0.1 -> 1.1 [color="cadetblue2" penwidth="2"]; 
0.2 -> 1.1 [color="coral3" penwidth="5"]; 
0.3 -> 1.1 [color="green4" penwidth="8"]; 
0.4 -> 1.1; 
0.5 -> 1.1 [color="cyan1" penwidth="1"]; 
0.6 -> 1.1; 
0.7 -> 1.1; 
0.8 -> 1.1; 
0.9 -> 1.1; 
0.10 -> 1.1; 
0.11 -> 1.1; 
0.12 -> 1.1; 
0.13 -> 1.1; 
0.0 -> 1.2; 
0.1 -> 1.2 [color="cadetblue3" penwidth="3"]; 
0.2 -> 1.2 [color="coral4" penwidth="6"]; 
0.3 -> 1.2; 
0.4 -> 1.2 [color="gold1" penwidth="1"]; 
0.5 -> 1.2 [color="cyan2" penwidth="2"]; 
0.6 -> 1.2; 
0.7 -> 1.2; 
0.8 -> 1.2; 
0.9 -> 1.2; 
0.10 -> 1.2; 
0.11 -> 1.2; 
0.12 -> 1.2; 
0.13 -> 1.2; 
0.0 -> 1.3; 
0.1 -> 1.3 [color="cadetblue4" penwidth="4"]; 
0.2 -> 1.3; 
0.3 -> 1.3 [color="green1" penwidth="1"]; 
0.4 -> 1.3 [color="gold2" penwidth="2"]; 
0.5 -> 1.3 [color="cyan3" penwidth="3"]; 
0.6 -> 1.3; 
0.7 -> 1.3; 
0.8 -> 1.3; 
0.9 -> 1.3; 
0.10 -> 1.3; 
0.11 -> 1.3; 
0.12 -> 1.3; 
0.13 -> 1.3; 
0.0 -> 1.4; 
0.1 -> 1.4 [color="cadetblue4" penwidth="2"]; 
0.2 -> 1.4 [color="coral4" penwidth="2"]; 
0.3 -> 1.4 [color="green4" penwidth="2"]; 
0.4 -> 1.4 [color="gold4" penwidth="2"]; 
0.5 -> 1.4 [color="cyan4" penwidth="2"]; 
0.6 -> 1.4; 
0.7 -> 1.4; 
0.8 -> 1.4; 
0.9 -> 1.4; 
0.10 -> 1.4; 
0.11 -> 1.4; 
0.12 -> 1.4; 
0.13 -> 1.4; 
1.0 -> 2.0; 
1.1 -> 2.0; 
1.2 -> 2.0; 
1.3 -> 2.0; 
1.4 -> 2.0; 
}