令z是一个复变量,C(z)是它的共轭。在复分析理论中,不存在C(z) wrt z的导数。但是在 tesnsorflow 中,我们可以计算dC(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 通常如何处理复杂的渐变。