tf2梯度计算为None的情况

在使用TensorFlow 2(TF2)构建 Wasserstein GAN(WGAN)时,遇到梯度为None的情况。问题源于在CNN判别器中使用了`inputs.numpy()`,导致计算图断裂。解决办法是直接对`inputs`操作,避免将其转换为numpy数组,以保持计算图的连通性,从而正确计算梯度。
摘要由CSDN通过智能技术生成

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

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

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

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

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值