gpt4 book ai didi

tensorflow - tensorflow 如何处理复杂的梯度?

转载 作者:行者123 更新时间:2023-12-02 01:16:14 27 4
gpt4 key购买 nike

z 是一个复变量, C(z) 是它的共轭。
在复分析理论中, 的导数C(z) w.r.t z 不存在。但是在tesnsorflow中,我们可以计算直流(z)/dz 结果只是 1 .
下面是一个例子:

x = tf.placeholder('complex64',(2,2))
y = tf.reduce_sum(tf.conj(x))
z = tf.gradients(y,x)
sess = tf.Session()
X = np.random.rand(2,2)+1.j*np.random.rand(2,2)
X = X.astype('complex64')
Z = sess.run(z,{x:X})[0]

输入 X
[[0.17014372+0.71475762j  0.57455420+0.00144318j]
[0.57871044+0.61303568j 0.48074263+0.7623235j ]]

结果 Z
[[1.-0.j  1.-0.j]
[1.-0.j 1.-0.j]]

我不明白为什么梯度设置为 1 ?
还有我想知道 tensorflow 一般如何处理复杂的梯度 .

最佳答案

如何?

Tensorflow 用于梯度的方程为:

tf-grad-def

其中“*”表示共轭。

当使用偏导数 wrt z 和 z* 的定义时,它使用 Wirtinger 微积分。 Wirtinger 演算能够计算非全纯函数的复变量的导数。维廷格的定义是:

wirtinger

为什么是这个定义?

例如,当使用复值神经网络 (CVNN) 时,梯度将用于一个或多个复变量的非全纯实值标量函数,然后可以将梯度的 tensorflow 定义写为:



该定义与 CVNN 的文献一致,例如 this book 的第 4 章第 4.3 节或 Amin et al. (在无数个例子之间)。

关于tensorflow - tensorflow 如何处理复杂的梯度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com