需要在`model.evaluate()`之前编译Keras模型

2023-12-19

我加载一个Keras模型来自.json and .hdf5文件。当我打电话时model.evaluate(),它返回一个错误:

您必须在训练/测试之前编译模型。使用`model.compile(优化器,损失)

为什么需要编译才能运行evaluate()?

要添加的话,可以通过modelpredict()没有问题。


Because evaluate https://keras.io/models/model/#evaluate将计算损失函数和指标.

在编译模型之前,您不会拥有其中任何一个。它们是编译方法的参数:

model.compile(optimizer=..., loss=..., metrics=...) 

另一方面,predict https://keras.io/models/model/#predict不评估任何指标或损失,它只是将输入数据传递给模型并获取其输出。

你也需要“损失”来进行训练,所以你不能在不编译的情况下进行训练。您可以根据需要多次编译模型,甚至更改参数。


输出和损失函数:

模型的输出取决于它的权重定义。这是自动的,您可以predict来自任何模型,即使没有任何训练。 Keras 中的每个模型都已经带有权重(由您初始化或随机初始化)

你输入一些东西,模型就会计算输出。归根结底,这才是最重要的。一个好的模型具有适当的权重并正确输出。

但在实现这一目标之前,您的模型需要经过训练。

现在,损失函数获取当前输出并将其与预期/真实结果进行比较。这是一个应该最小化的函数。损失越少,结果就越接近预期。这是从中获取导数的函数,以便反向传播算法可以更新权重。

损失函数对于模型的最终目的没有用处,但对于训练来说是必要的。这可能就是为什么您可以拥有没有损失函数的模型(因此,无法评估它们)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要在`model.evaluate()`之前编译Keras模型 的相关文章

随机推荐