Hello Forum!
The current nightly build, version 1.8.0.dev20201208, gives the
wrong autograd result for the square of a complex tensor.  This
very simple case is handled correctly in version 1.6.0.
A quick look at github didn’t turn up any issues that seemed
directly relevant to this change.
For complex z, the complex derivative of its square is given by
d z*z / d z  =  2 * z

(just as it would be if z were real).  It appears that the current
nightly build incorrectly returns 2 * z.conj() as the derivative.
Here are the new and old pytorch results:
Version 1.8.0.dev20201208:
>>> import torch
>>> torch.__version__
'1.8.0.dev20201208'
>>> z = torch.tensor ([2. + 1.j], requires_grad = True)
>>> zsq = z * z
>>> zsq.backward()
>>> z.grad
tensor([4.-2.j])

(The result for z.grad should be 2 * z = tensor([4.+2.j]).)
Version 1.6.0:
>>> import torch
>>> torch.__version__
'1.6.0'
>>> z = torch.tensor ([2. + 1.j], requires_grad = True)
>>> zsq = z * z
>>> zsq.backward()
/home/user/miniconda3/lib/python3.8/site-packages/torch/autograd/__init__.py:125: UserWarning: Complex backward is not fully supported yet and could lead to wrong gradients for functions we have not fixed yet (Triggered internally at  /opt/conda/conda-bld/pytorch_1595629395347/work/torch/csrc/autograd/python_engine.cpp:157.)
  Variable._execution_engine.run_backward(
>>> z.grad
tensor([4.+2.j])

(Here, z.grad is correct.)
The same thing happens using z.pow (2.0) in place of z * z.
In the following post, I link to a potentially-relevant discussion about
generalized complex differentiation.

  
    
    
    How might autograd differentiate complex functions that are not complex-differentiable? complex
  
  
    Hello Forum! 
There are useful functions of a complex variable, z, that are not 
“complex-differentiable,” that is, they are not analytic functions. 
Two examples would be z.conj() and |z|**2 = z * z.conj(). 
Note that these functions are differentiable when viewed as real 
functions of two real variables, x and y, where z = x + yj. 
I think that when a function is analytic, autograd should return 
its conventional complex derivative.  However, we would like 
autograd also to do something “usefu…
  


Best.
K. Frank