How does tf.gradients manages complex functions?

徘徊边缘 提交于 2020-03-22 03:49:06

问题


I am working with complex-valued neural networks.

For Complex-valued neural networks Wirtinger calculus is normally used. The definition of the derivate is then (take into acount that functions are non-Holomorphic because of Liouville's theorem):

If you take Akira Hirose book "Complex-Valued Neural Networks: Advances and Applications", Chapter 4 equation 4.9 defines:

Where the partial derivative is also calculated using Wirtinger calculus of course.

Is this the case for tensorflow? or is it defined in some other way? I cannot find any good reference on the topic.


回答1:


Ok, so I discussed this in an existing thread in github/tensorflow and @charmasaur found the response, the equation used by Tensorflow for the gradient is:

When using the definition of the partial derivatives wrt z and z* it uses Wirtinger Calculus.


For cases of a real-valued scalar function of one or several complex variables, this definitions becomes:

Which is indeed the definition used in Complex-Valued Neural Networks (CVNN) applications (In this applications, the function is the loss/error function which is indeed real).



来源:https://stackoverflow.com/questions/57108959/how-does-tf-gradients-manages-complex-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!