它们并不完全是一回事。Chollet's Deep Learning with Python: 这意味着predict()调用可以扩展到非常大的数组。同时,model(x)发生在内存中,并且不会扩展。另一方面,predict()是不可微的:如果在GradientTape作用域中调用它,则无法检索它的渐变。当需要检索模型调用的梯度时,应该使用model(x),如果只需要输出值,应该使用predict()。换句话说,总是使用predict(),除非你正在编写一个低级的梯度下降循环(就像我们现在一样)。
2条答案
按热度按时间flseospp1#
带有tensorflow后端的Keras使用底层tensorflow对象,但主要是提供可以在tensorflow环境之外理解的高级输出(例如,它可以输出numpy数组或python列表)。
今天给出一个TensorFlow2.0中的模型(使用Keras库构建)
字符串
提供了一个numpy数组,例如,可以用
print(out_np)
打印。另一方面,在一项研究中,
型
结果转换为一个tensorflow对象,可以将其转换为一个numpy数组
.numpy()
这两个结果是等价的,作为一个例子,我们有以下是真的,
型
格式可能不同,但
model(x)
和model.predict(x)
的含义是相同的:给定输入x,它是由其结构、权重和偏置表征的网络的输出节点的值。
ldfqzlk82#
它们并不完全是一回事。Chollet's Deep Learning with Python:
这意味着
predict()
调用可以扩展到非常大的数组。同时,model(x)
发生在内存中,并且不会扩展。另一方面,predict()
是不可微的:如果在GradientTape作用域中调用它,则无法检索它的渐变。当需要检索模型调用的梯度时,应该使用model(x)
,如果只需要输出值,应该使用predict()
。换句话说,总是使用predict()
,除非你正在编写一个低级的梯度下降循环(就像我们现在一样)。