使用model(x)和model.predict(x)预测Tensorflow中模型的结果有什么区别?
答案 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_1
和model_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,它是网络输出节点的值,其特征在于其结构,权重和偏差。