Sae*_*ari 9 machine-learning neural-network image-segmentation deep-learning keras
我使用Keras生物医学图像分割技术来分割脑神经元。我用model.evaluate()它给了我骰子系数:0.916。但是,当我使用时model.predict(),通过计算Dice系数遍历预测图像,Dice系数为0.82。为什么这两个值不同?
Par*_*kar 14
该keras.evaluate()函数将为您提供每批的损失值。该keras.predict()函数将为您提供批次中所有样品的实际预测,适用于所有批次。因此,即使您使用相同的数据,差异也会存在,因为损失函数的值几乎总是与预测值不同。这是两件不同的事情。
问题在于,每个指标的Keras评估方式如下:
batch度量值都将进行评估。k批次后等于计算k批次中指标的平均值)。最最流行的指标(如mse,categorical_crossentropy,mae)等-的平均每个实施例中的损耗值的-有一个属性,这样的评估端了一个正确的结果。但是,在骰子系数的情况下-所有批次中其值的平均值不等于在整个数据集上计算出的实际值,并且model.evaluate()使用这种计算方式-这是造成问题的直接原因。
该model.evaluate函数预测给定输入的输出,然后model.compile基于y_true和y_pred计算在和中指定的指标函数,然后将计算出的指标值作为输出返回。
在model.predict刚刚返回的y_pred
因此,如果您自己使用model.predict然后计算指标,则计算出的指标值应与model.evaluate
例如,在评估需要在下一个时间步中将输出作为输入的基于RNN / LSTM的模型时,将使用model.predict而不是model.evaluate
| 归档时间: |
|
| 查看次数: |
8151 次 |
| 最近记录: |