如何将高斯进程库中的Tensor对象转换为numpy数组?

3duebb1j  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

我想将一个Tensor对象(在本例中是通过使用高斯过程模型获得的预测值)转换为一个numpy数组。
我写了一段代码如下。

# Predict using the validation set
num_samples = 10
X_val_reshaped = np.ravel(X_val)
samples = gp.sample(X_val_reshaped, num_samples)
samples = tf.reshape(samples, [num_samples, -1, 1])
pred_mean = tf.reduce_mean(samples, axis=0)
pred_var = tf.math.reduce_variance(samples, axis=0)

但是,我得到了Tensor类型的样本。我想把它转换成一个numpy数组,这样我就可以计算RMSE值。当我尝试编写samples.eval()或samples.numpy()时,我得到了错误消息,例如Tensor对象没有属性'numpy'或其他消息,例如,没有注册默认会话。使用with sess.as_default()或将显式会话传递给`eval(session=sess)。而且,当我写这些代码时

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    rmse_val = sess.run(samples)
    print('samples:', samples)

它仍然不是一个numpy对象。有没有办法将Tensor对象(在本例中是使用高斯过程模型获得的预测值)转换为numpy对象?

57hvy0tb

57hvy0tb1#

您可以直接使用Tensor来计算RMSE,而不是将其转换为Numpy数组。
RMSE的公式,如你所知是:

在TF中实现它的方法是-

tf.sqrt(tf.reduce_mean(tf.squared_difference(Y1, Y2))).

相关问题