backward method

void backward()

Implementation

void backward() {
  grad = 1.0;
  List<Node> topo = [];
  Set<Node> visited = {};

  void buildTopo(Node node) {
    if (!visited.contains(node)) {
      visited.add(node);
      for (var parent in node._parents) {
        buildTopo(parent);
      }
      topo.add(node);
    }
  }

  buildTopo(this);
  for (var node in topo.reversed) {
    for (var backwardOp in node._backward) {
      backwardOp();
    }
  }
}