0

所以在我的 Tensorflow2 模型中,我得到了错误:“ValueError:没有为任何变量提供梯度”

根据:TensorFlow:'ValueError:没有为任何变量提供梯度'问题是我从 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
4

0 回答 0