{ "description": "Reverse mode's last step: adjoints have reached every input, giving the whole gradient", "calls": { "handle_set_function": { "args": { "expression": "x*y + y" }, "result": { "inputs": [ "x", "y" ], "constants": {}, "nodes": [ { "id": "w1", "kind": "input", "name": "x" }, { "id": "w2", "kind": "input", "name": "y" }, { "id": "w3", "kind": "op", "op": "mul", "args": [ "w1", "w2" ] }, { "id": "w4", "kind": "op", "op": "add", "args": [ "w3", "w2" ] } ], "output": "w4" } }, "handle_set_run": { "args": { "mode": "reverse", "inputs": { "x": 2, "y": 3 } }, "result": { "steps": 5 } }, "handle_state": { "args": { "iteration": 5 }, "result": { "step": { "phase": "backward", "node": "w3", "value": 6.0, "derivative": 1.0, "partials": [ { "arg": "w1", "partial": 3.0, "amount": 3.0 }, { "arg": "w2", "partial": 2.0, "amount": 2.0 } ] }, "values": { "w1": 2.0, "w2": 3.0, "w3": 6.0, "w4": 9.0 }, "derivatives": { "w4": 1.0, "w3": 1.0, "w2": 3.0, "w1": 3.0 } } } } }