模型训练后,如何预测和评估我的指标?
代码如下:
for patch in generator(): pred = model.predict(np.array(patch, dtype=patch.dtype)) loss_val_partial,accuracy_val_partial = model.test_on_batch(np.array(patch, dtype=patch.dtype),pred)
或者像这样:
for patch in generator(): pred = model.predict(np.array(patch, dtype=patch.dtype)) loss_val_partial,accuracy_val_partial = model.test_on_batch(ground_truth,pred)
其中ground truth是patch的真实标签。
我认为第一个代码不正确,因为准确率总是1.0
回答:
你的第一个代码列表中的问题在于,你首先用模型预测输出,然后使用这个结果pred
作为测试的真实值,因此准确率当然会是1.0
查看test_on_batch
方法的签名:
test_on_batch(self, x, y, sample_weight=None)
所以我无法为你自己测试,因为你只展示了代码的一部分(例如,我不知道你的ground truth从哪里来),但你可以尝试这样做,即删除手动预测步骤,因为test_on_batch
内部已经为你完成了这个步骤:
for patch in generator(): loss_val_partial,accuracy_val_partial = model.test_on_batch(np.array(patch, dtype=patch.dtype), ground_truth)