keras tensorflow2 得到训练数据的结果

keras tensorflow2 get results for the training data

在 keras 中,我们可以使用 fit 命令训练模型,然后使用 predict

Dcnn=model.fit(x_train, y_train, epochs=5, batch_size=32)
model.predict(test_dataset,verbose=True)

当我们使用 fit 方法时,我们得到的准确度结果如下。假设在 5 个 epoch 之后,我们在训练数据上的准确率为 98.62%。现在,如果我们使用 model.predict(x_train,verbose=True),我们是否会得到与 fit 方法结果中所示的每个观察值完全相同的准确度和完全相同的预测?如果不是,为什么?

Epoch 5/5
61/61 - 11s - loss: 0.0320 - tp: 1602.0000 - fp: 18.0000 - tn: 321.0000 - fn: 9.0000 - accuracy: 0.9862 

更新1

我更新命令如下 Dcnn.fit(train_dataset, epochs=NB_EPOCHS, verbose=2,validation_data=test_dataset)

我得到了以下结果

Epoch 5/5

61/61 - 11s - loss: 0.0320 - tp: 1602.0000 - fp: 18.0000 - tn: 321.0000 - fn: 9.0000 - accuracy: 0.9862 - precision: 0.9889 - recall: 0.9944 - auc: 0.9990 - val_loss: 0.9760 - val_tp: 161.0000 - val_fp: 22.0000 - val_tn: 9.0000 - val_fn: 0.0000e+00 - val_accuracy: 0.8854 - val_precision: 0.8798 - val_recall: 1.0000 - val_auc: 0.7169

现在,如果我尝试 model.predict(test_dataset,verbose=True),我将获得 88.54% 的准确率 - 与拟合方法的输出相同。

如果我运行model.predict(train_dataset,verbose=True),我的准确率能达到98.62%吗?如果不是,那是为什么?

调用fit()时,模型仍在训练中,结果不准确。调用 predict() 是准确的,因为模型已完成训练。

您无法使用 fit 查看 类 的概率。这是由于权重在每批之后根据概率发生变化。这意味着从一批到另一批你有不同的权重,因此即使在相同的数据上也会给出不同的答案。

为了得到真实的概率,可以使用predict()。预测和拟合不会 return 相同的概率,因为 predict returns 对于整个集合,而 fit 是所有批次的平均值(批次之间的权重不同).

此外,您可能会感到困惑,将 model.fit() return 称为 History 对象,其中包含损失值和准确性等值。调用 Dcnn.predict() 会出错,因为 History 对象没有 "predict" 属性。 model.predict() 应用于获得预测,而预测又可用于计算概率。

模型的权重保存在实例本身中,因此在调用 fit() 后,模型会自动更改和保存权重。