Keras中model(x)和model.predict(x)的区别?

m3eecexj  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(139)

在Keras中使用model(x)model.predict(x)来预测模型的结果有什么区别?

flseospp

flseospp1#

带有tensorflow后端的Keras使用底层tensorflow对象,但主要是提供可以在tensorflow环境之外理解的高级输出(例如,它可以输出numpy数组或python列表)。
今天给出一个TensorFlow2.0中的模型(使用Keras库构建)

out_np = model.predict(x)

字符串
提供了一个numpy数组,例如,可以用print(out_np)打印。
另一方面,在一项研究中,

out_tf = model(x)


结果转换为一个tensorflow对象,可以将其转换为一个numpy数组.numpy()
这两个结果是等价的,作为一个例子,我们有以下是真的,

out_np.max() == out_tf.numpy().max()


格式可能不同,但model(x)model.predict(x)的含义是相同的:
给定输入x,它是由其结构、权重和偏置表征的网络的输出节点的值。

ldfqzlk8

ldfqzlk82#

它们并不完全是一回事。Chollet's Deep Learning with Python
这意味着predict()调用可以扩展到非常大的数组。同时,model(x)发生在内存中,并且不会扩展。另一方面,predict()是不可微的:如果在GradientTape作用域中调用它,则无法检索它的渐变。当需要检索模型调用的梯度时,应该使用model(x),如果只需要输出值,应该使用predict()。换句话说,总是使用predict(),除非你正在编写一个低级的梯度下降循环(就像我们现在一样)。

相关问题