1

之間的區別我使用keras生物醫學圖像分割來分割大腦神經元。我用model.evaluate()它給了我Dice coef:0.916,但是,當我使用model.predict然後通過計算Dice係數循環預測圖像時,Dice係數是0.82。 有什麼想法?keras model.evaluate()和model.predict()

感謝

+0

請分享您的數據,您的代碼和您的火車/驗證/測試分割的更多細節。 – petezurich

回答

0

keras.evaluate()功能會給你的每一批損耗值。 keras.predict()函數將爲您提供所有批次中所有樣品的實際預測值。所以,即使你使用相同的數據,差異也會存在,因爲損失函數的值幾乎總是與預測值不同。這是兩件不同的事情。

2

問題在於以下事實:在每Keras度量以下面的方式進行評價:

  1. 對於每個batch一個度量值進行評估。
  2. 損失的當前值(在k批次之後等於計算的k批次上的指標的平均值)。
  3. 最終結果是所有批次計算的所有損失的平均值。

大多數最流行的指標(如msecategorical_crossentropymae)等 - 作爲各實施例的損耗值的平均值 - 具有這樣的評價用正確的結果結束了的性質。但是在Dice係數的情況下 - 所有批次的平均值不等於整個數據集上計算出的實際值,因爲model.evaluate()使用這種計算方式 - 這是問題的直接原因。