Rank-3 weight tensor \(W\):
digraph { bgcolor = transparent rankdir = LR splines = line ranksep = 1 subgraph cluster_l1 { style = dotted l1d2 [label = "⋮" shape = none] l1n3 [shape = circle width = 0.75 label = ""] l1n2 [shape = circle width = 0.75 label = ""] l1n1 [shape = circle width = 0.75 label = ""] l1d1 [label = "⋮" shape = none] l1 [label = <layer <i>i</i>−1<br/>neurons> shape = none] } subgraph cluster_l2 { style = dotted l2d2 [label = "⋮" shape = none] l2n3 [shape = circle width = 0.75 label = ""] l2n2 [shape = circle width = 0.75 label = ""] l2n1 [shape = circle width = 0.75 label = ""] l2d1 [label = "⋮" shape = none] l2 [label = <layer <i>i</i><br/>neurons> shape = none] } subgraph cluster_l3 { style = dotted l3d2 [label = "⋮" shape = none] l3n3 [shape = circle width = 0.75 label = ""] l3n2 [shape = circle width = 0.75 label = ""] l3n1 [shape = circle width = 0.75 label = ""] l3d1 [label = "⋮" shape = none] l3 [label = <layer <i>i</i>+1<br/>neurons> shape = none] } l1d1 -> l2d1 [style = invis] l2d1 -> l3d1 [style = invis] l1n1:e -> l2n1:w [dir = none] l1n2:e -> l2n2:w [dir = none] l1n3:e -> l2n3:w [dir = none] l2n1:e -> l3n1:w [dir = none] l2n2:e -> l3n2:w [dir = none] l2n3:e -> l3n3:w [dir = none] l1d2 -> l2d2 [style = invis] l2d2 -> l3d2 [style = invis] l1 -> l2 [constraint = false label = "forward"] l2 -> l3 [constraint = false label = "forward"] l1n1:e -> l2n2:w [constraint = false dir = none] l1n1:e -> l2n3:w [constraint = false dir = none] l1n2:e -> l2n1:w [constraint = false dir = none] l1n2:e -> l2n3:w [constraint = false dir = none] l1n3:e -> l2n1:w [constraint = false dir = none] l1n3:e -> l2n2:w [constraint = false dir = none] l2n1:e -> l3n2:w [constraint = false dir = none] l2n1:e -> l3n3:w [constraint = false dir = none] l2n2:e -> l3n1:w [constraint = false dir = none] l2n2:e -> l3n3:w [constraint = false dir = none] l2n3:e -> l3n1:w [constraint = false dir = none] l2n3:e -> l3n2:w [constraint = false dir = none] }