张量流中model(x)和model.predict(x)之间的差异

时间:2019-03-22 22:10:24

标签: tensorflow

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

2 个答案:

答案 0 :(得分:0)

假设您正在使用tf.keras.models.Model

model.predict():预测给定样本X的标签。如果模型具有多个输出,它将返回NumPy数组或NumPy数组的列表。应该在推断时使用。

model( another_model ):如您所知,在Keras中,我们可以调用每个图层以将它们与Input图层和其他图层 connect 连接起来。我们可以以这种方式堆叠图层。

x = Input()
dense = Dense( 32 )( x )
y = Dense( 2 )( dense )
model = Model( x , y )

现在,以类似的方式,我们也可以堆叠模型。

final_model = model_1 ( model_2 )

这里,输入将依次流经model_1model_2的输入。

答案 1 :(得分:0)

具有tensorflow后端的Keras使用底层的tensorflow对象,但大多数情况下提供了可以在tensorflow环境之外理解的高级输出(例如,它可以输出numpy数组或python列表)。
今天给出了一个模型在tensorflow 2.0中(使用keras库构建),

out_np = model.predict(x)

提供了一个numpy数组,例如,可以使用print(out_np)打印。
另一方面,

out_tf = model(x)

结果生成一个tensorflow对象,可以使用.numpy()将其转换为numpy数组
这两个结果是相等的,例如,我们有以下内容为True,

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

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