0

使用 tensorflow 计算 MSE 时,出现错误AttributeError: 'Tensor' object has no attribute 'numpy' 原因是我需要禁用急切执行(tf.disable_eager_execution())。问题:在 TensorFlow 中禁用 Eager Execution 时如何计算均方误差?代码看起来像这样(我使用的是最新版本的 Tenorflow):

tf.disable_eager_execution()

mse = tf.keras.losses.MeanSquaredError()
MSE = mse(y_true, y_prediction).numpy()
4

2 回答 2

0

您需要创建一个会话。这应该有效(在 TF 2.5 上测试):

tf.compat.v1.disable_eager_execution()

mse = tf.keras.losses.MeanSquaredError()
MSE = mse(y_true, y_prediction)

with tf.compat.v1.Session().as_default():
    MSE.eval()

尽管我同意 Nicolas 的观点,即在 Eager 模式下进行调试会更好(也更容易)。

于 2021-08-26T14:43:59.037 回答
0

你不能也不应该。当急切执行被禁用时,计算和对象将离开 Python。这样做的目的是训练一个具有优化后端的模型,而不是“慢”的 Python。作为副作用,Python 无法访问对象和值。当您训练模型时,这很好,您可以在 Python 中运行该模型。但是,如果您想监视每个操作,这将不起作用。

如果您想访问张量值,只需启用急切执行。

于 2021-08-26T14:34:09.227 回答