所以在我的 Tensorflow2 模型中,我收到错误:“ValueError:没有为任何变量提供梯度”
根据:TensorFlow: 'ValueError: No gradients provided for any variable' 问题是我从 tf.tensors 中提取值,操作它们,然后返回一个损失值。我需要使用 tf.tensor 操作来做所有事情。
问题是,我不知道如何用张量运算做我想做的事情。我想要做的是计算 y_pred 相对于由以 y_true 为中心的多元高斯定义的度量的概率,并具有一组协方差矩阵。问题是,这需要针对 y_pred 中的每一行相对于 y_true 中的对应行发生。
我如何通过张量运算来做到这一点?抱歉,我对 TF2 很陌生。
代码如下:
python
import numpy
import tensorflow as tf
import scipy.stats as stats
def probability_loss(y_true, y_pred):
cov = 0.005*numpy.eye(2)
loss = 0
for v, val in enumerate(y_true.numpy()):
dist = stats.multivariate_normal(mean=val, cov=cov)
loss += -numpy.log(dist.pdf(y_pred[v]))
tf_loss = tf.convert_to_tensor(loss, dtype=numpy.float32)
return tf_loss