Implementing Jacobian of non-holomorphic complex-valued function #10155
Replies: 2 comments
-
I suggest that you can explicitly divide your function's input and output to real part and imaginary part for such use case. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the question!
I may not be understanding what you're describing, but the last part of identifying things back to a single complex dimension sounds suspect because holomorphic C->C functions are exactly those where one can identify the action of a JVP with multiplication by a single complex number. That is, if your function isn't holomorphic, I'm not sure what kind of identification you want to do; a general C^m -> C^n Jacobian requires 2m * 2n = 4mn real components (exactly as if it were for an R^2m -> R^2n map), which means it can't be identified with a n x m complex matrix (which would comprise only n * m * 2 = 2mn real components). In other words, I'd say yes make a 2m-dimensional basis and push that forward (to get, effectively, n complex numbers for each basis element, or 2n real numbers from the real and complex parts of the output, for a total of 4mn real numbers), but just keep in mind that the result you get can't be identified with an n x m complex matrix. In other words, I agree with @YouJiacheng that you should just think in terms of real and complex parts. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello,
I'm trying to find Jacobians of non-holomorphic general
C^m -> C^n
functions, and (later) extend this to higher dimensional complex functions, e.g.C^{i x j x k} -> C^{r x s x t}
.According to this thread from a couple of years back, in order to find Jacobians of general
C^m -> C^n
non-holomorphic functions, one should roll their own usingjvp
/vjp
.The autodiff cookbook describes the procedure for the
C -> C
non-holomorphic case. If we are to generalize to theC^m -> C^n
case usingjvp
, say, is it correct to say that we should pushforward the standard2m
-dimensional basis, and then identify each consecutive pair of coefficients in the output vector as the real and imaginary parts, respectively, of a single complex dimension?I've also been trying to find an implementation of the non-holomorphic Jacobian case somewhere for reference without much luck, so any pointers to any existing resources would be appreciated.
Beta Was this translation helpful? Give feedback.
All reactions