backward method
void
backward()
Implementation
void backward() {
List<Value> topo = [];
Set<Value> visited = {};
buildTopo(Value v) {
if (!visited.contains(v)) {
visited.add(v);
for (Value child in v._prev) {
buildTopo(child);
}
topo.add(v);
}
}
print("Topology: $topo");
buildTopo(this);
// go one variable at a time and apply the chain rule to get its gradient
grad = 1;
final reverseOrder = topo.reversed;
for (Value v in reverseOrder) {
v._backward();
}
}