2017-11-25 225 views
-1

模型培训之后我如何预测和评估我的指标?
代码是这样的:在Keras中预测和评估指标

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) 

其中地面实况是补丁的正确标签。

我不认为首先是正确的,因为精度始终1.0

+0

如果它帮助,那么请接受答案 – DAXaholic

回答

2

在你的第一个代码的问题是,你首先预测的输出与您的模型,然后使用这个结果pred作为地面实况供试品,让你当然会拥有1.0

的精度为test_on_batch方法见signature

test_on_batch(self, x, y, sample_weight=None) 

所以我不能测试它自己y的ou,因为您只显示了部分代码(例如我不知道你的地面实况来自),但尝试这样的事情,也就是直接删除,因为它是内部为你在做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) 
+0

test_on_batch方法不会返回预测,因为我需要预测和指标......这就是为什么我也使用预测的原因 – leoScomme

+0

是的,没关系,但不要将您的预测作为基础事实传递,因为这是错误的(您认为自己的acc = 1.0) – DAXaholic

+0

好的,所以解决方案是你的,但如果我想要预测,我也必须添加预测方法,对不对? – leoScomme