Edge objects are constructed using the gradient_edge  function method.
 Edge gradient_edge(const Variable& self) {
    if (const auto& gradient = self.grad_fn()) {
      return Edge(gradient, self.output_nr());
    } else {
      return Edge(grad_accumulator(self), 0);
    }
  }


Entering the C++ Realm
Once that torch.autograd.backward() has been invoked, the
THPEngine_run_backward routine starts the graph traversal. Following is a schema of the function body:
```c++
PyObject THPEngine_run_backward(PyObject self, PyObject args, PyObject kwargs)
{
  HANDLE_TH_ERRORS
  PyObject tensors = nullptr;
  PyObject grad_tensors = nullptr;
  unsigned char keep_graph = 0;
  unsigned char create_graph = 0;
  PyObject *inputs = nullptr;