Thnx 
Another follow up question, what is grad[0] and grad[1] and .defined()?
Tensor var_std_mean_backward(const variable_list& grads, const Tensor & self, const Tensor & r1, const Tensor & r2, bool unbiased, bool is_std) {
  Tensor grad;
  if (grads[0].defined()) {
    grad = is_std ? std_backward(r1, grads[0], self, unbiased) : var_backward(grads[0], self, unbiased);
  }
  if (grads[1].defined()) {
    Tensor mean_grad = mean_backward(grads[1], self.sizes(), self.numel());
    grad = grads[0].defined() ? grad + mean_grad : mean_grad;
  }
  return grad;
}

And where are these grad_fn coming from

<AddBackward0 at 0x1185d8048>

?
a=torch.rand(2,3).requires_grad_()                                                                                                                    
b=torch.rand(2,3)                                                                                                                                     
z=(a+b).requires_grad_() 
f=z.sum()                                                                                                                                     
f.backward()                                                                                                                                         
z.grad_fn                                                                                                                                            
Out[17]: <AddBackward0 at 0x1185d8048>

surpassingly if you search whole repository for the AddBackward you dont find anything. So where are these string coming from?

  
      
      GitHub
  
  
    

pytorch/pytorch

Tensors and Dynamic neural networks in Python with strong GPU acceleration - pytorch/pytorch