我加载一个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(使用前将#替换为@)