backward method

void backward()

Implementation

void backward() {
  final topo = <Value>[];
  final visited = <Value>{};

  void buildTopo(Value v) {
    if (!visited.contains(v)) {
      visited.add(v);
      for (final child in v._prev) {
        buildTopo(child);
      }
      topo.add(v);
    }
  }

  buildTopo(this);
  grad = 1.0;
  for (final v in topo.reversed) {
    v._backward();
  }
}