You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行深度神经网络时遇ValueError:无梯度提供问题求助

解决TensorFlow中"No gradients provided for any variable"错误

嘿,这个问题我之前也踩过坑!你代码里的问题其实是个很容易犯的小错误,咱们来一步步理清:

错误根源

在你的train_neural_network函数里,这一行损失函数的参数顺序搞反了:

cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(labels=prediction,logits=y) )

tf.nn.softmax_cross_entropy_with_logits的参数规则是:

  • logits:对应模型输出的预测值(也就是你的prediction)
  • labels:对应真实的标签数据(也就是你的y)

你现在把两者写反了,导致损失函数和模型的权重变量之间没有建立正确的依赖关系,TensorFlow自然找不到可以计算梯度的路径,也就抛出了这个错误。

修正方案

只需要调换参数顺序即可:

cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y) )

额外小提示

另外要注意:tf.nn.softmax_cross_entropy_with_logits在TensorFlow新版本中已经被标记为弃用,推荐使用兼容性更好的tf.nn.softmax_cross_entropy_with_logits_v2,用法完全一致:

cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits_v2(logits=prediction, labels=y) )

修正后再运行代码,应该就能正常计算梯度并训练模型了!

内容的提问来源于stack exchange,提问作者Raheel Siddiqi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:02