tf2梯度计算为None的情况

今天搭建用tf2搭建WGAN网络,自己来写梯度函数,在使用tf.GradientTape()来求梯度时,发现求出结果为None。

一般来说结果为None,表示输入变量之间没有构成可求导的关系,同时也需要理解tf.GradientTape()求导的原理,是根据输入的target和source构建好的图进行求导,其中的变量可以视为节点,如果节点间没有连接,求导便会停止,返回None

我检查代码后发现,在用CNN搭建判别器的时候,有这么一行代码:

for input in inputs.numpy():
	....
	....

这里我是想直接操作tensor的矩阵了,但是这样会导致求导图中断开联系,
因为inputs.numpy()和inputs算作两个节点了,所以直接对inputs操作,这样就不会返回None了

你可能感兴趣的:(tensorflow,tensorflow,神经网络,深度学习)