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()
后,模型会自动更改和保存权重。
在 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()
后,模型会自动更改和保存权重。