我想将一个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对象?
1条答案
按热度按时间57hvy0tb1#
您可以直接使用Tensor来计算RMSE,而不是将其转换为Numpy数组。
RMSE的公式,如你所知是:
在TF中实现它的方法是-