簡體   English   中英

Keras model.predict function 沒有給出與 Z20F35E630DAF44DBFA4C3F68FZ59 類似的結果。

[英]Keras model.predict function not giving similar results as model.evaluate

我已經使用 Keras 訓練了圖像分類 model。 訓練后的 model 在訓練數據上的准確率為 95%,使用 model.evaluate 在未觸及的驗證數據上,我得到 ~92.8% 的准確率。

但是,當我使用 model.predict function 來獲取預測概率並以最大概率獲得預測的 class 時,我得到了約 80% 的准確度。

完整代碼可通過以下鏈接作為 colab 筆記本獲得 - https://colab.research.google.com/drive/1RQ2KnT2sVsdCAWfpsDj_kcMZiqiwJrpc?usp=sharing

您應該能夠運行所有內容並看到准確性的差異。 問題出在如下代碼塊中

上述鏈接上托管的 Google Colab Notebook 中顯示的准確性問題

要使predict_generatorevaluate_generator的精度相同,您必須在函數中將以下 3 項設置為參數:

shuffle = False
pickle_safe = True
workers = 1

您的程序可能在不同的線程上運行,這些設置使其在主線程上運行。

The solution I could find so far after having posted the issue here and keras official github (without any answer for weeks) is that instead of using Keras, I used tf.keras. 大多數實施保持不變。 而“隨機播放”選項肯定會破壞准確性。 “Shuffle = False”的較低准確度可能是 keras 實現中的一個錯誤。 tf.keras 實現在“evaluate_generator”function 中給出了相同的結果。 並且預測和評估 function 輸出的准確度匹配。 我希望如果其他人遇到這個錯誤,他們不會像我在這個問題上浪費那么多時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM