我尝试使用 Graphviz 来了解基本神经网络的状态。输入层有14个神经元,输出层只有一个神经元。可以选择隐藏层的数量以及每一层内的神经元数量。通常只有一个隐藏层。不过,这一层内的神经元数量可能相当大(比如 1000 个)。但是,出于演示目的,我只需要 5 个神经元(我知道我永远不会得到数百个神经元的有用图片)。我想:
- 写出每个神经元之间的边(连接)的权重
- 根据其重量修改边缘的厚度
- 也许标记每一层
关于厚度,我知道我可以使用“penwidth”。我也知道集群,它可以帮助界定每一层并给它们贴标签。到目前为止,我的主要问题是输入层(14 个神经元)和隐藏层之间的边太多,Graphiz 无法生成清晰的图片。如果我添加标签来显示连接的权重,那就更糟了。我认为在我的输入和隐藏层之间放置更多空间可以提高渲染的可读性,但我没有找到如何做到这一点,尽管研究了很长时间。
下面是目前的样子: 神经网络的当前渲染,没有权重
这是这张图片背后自动生成的点代码:
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。请注意,神经元在图片中没有以正确的顺序出现,我也没有解决的问题......
谢谢你的帮助。