Plot 如何正确地用Graphviz绘制剩余神经网络块?

Plot 如何正确地用Graphviz绘制剩余神经网络块?,plot,neural-network,graphviz,Plot,Neural Network,Graphviz,我试图创建一个图表,显示带有剩余连接的ConvNet体系结构。我使用下面的图形定义 digraph Model { node [shape=box]; input [label="Input"]; n1 [label="Conv2d(256, BN, ReLU)"]; n2 [label="Conv2D(256, BN, ReLU)"]; n3 [label="Conv2D(128, BN, ReLU)"]; n4 [label="Conv2D(

我试图创建一个图表,显示带有剩余连接的ConvNet体系结构。我使用下面的图形定义

digraph Model {
    node [shape=box];

    input [label="Input"];
    n1 [label="Conv2d(256, BN, ReLU)"];
    n2 [label="Conv2D(256, BN, ReLU)"];
    n3 [label="Conv2D(128, BN, ReLU)"];
    n4 [label="Conv2D(128, BN, ReLU)"];
    n5 [label="GlobalPool2d"];
    n6 [label="Flatten"];
    top [label="Dense(1, Sigmoid)"];

    add1 [label="Add"];
    add2 [label="Add"];

    input -> n1;
    n1 -> n2;
    n1 -> add1;
    n2 -> add1;
    add1 -> n3;

    n3 -> n4;
    n3 -> add2;
    n4 -> add2;
    add2 -> n5;

    n5 -> n6 -> top;
}
生成的绘图如下图所示

问题是剩余连接将卷积层向左移动。我想知道是否有可能通过垂直轴对齐这些盒子?所以所有的层都在同一条垂直线上,剩余的连接都在周围。我尝试过使用
rank
rankdir
进行一些操作,但没有任何运气


你能帮我吗?或者可以指向文档的相关部分,在那里我可以阅读如何正确地执行所需操作?

权重属性将执行所需操作。 将两行更改为:

   n1 -> add1 [weight=0];
   n3 -> add2 [weight=0];
您将得到以下结果: