簡體   English   中英

keras:將 ImageDataGenerator 和 KFold 用於 fit_generator 的問題

[英]keras: issue using ImageDataGenerator and KFold for fit_generator

flow_from_directory (directory):它接收目錄但不接收分割訓練圖像。

sklearn.model_selection.KFold:提供圖像的分割索引。 這些可以在 fit() 中使用,但不能在 fit_generator() 中使用

如何將 KFold 與 ImageDataGenerator 一起使用? 它在嗎?

目前,無法使用flow_from_directory生成器拆分文件夾中保存的數據集。 這個選項根本沒有實現。 要獲得 test / train 拆分,需要使用 Python 中的os庫將主目錄拆分為一組 train / test / val 目錄。

假設您有 2 個類的分類問題,我會執行以下操作:

from keras.utils import to_categorical  

train_y = to_categorical(train_y, num_classes=2)
test_y = to_categorical(test_y, num_classes=2)

aug = ImageDataGenerator(...) #your ImageDataGenerator

Model = model.fit_generator(aug.flow(train_x,tain_y, batch_size=32), 
            validation_data=(test_x,test_y))

對於遇到此問題的任何人:截至發布此答案的日期 - 我認為沒有(至少相對)簡單的開箱即用解決方案,並由我自己的搜索結果決定。

我想出的唯一解決方案是在我的項目中解決類似問題,是在我的數據集中進行分區,分區數等於折疊數,並將它們保存為字典,以分區數作為鍵和文件路徑列出作為分區的值。 之后,您仍然需要將文件分別分類到用於訓練和驗證子集的類文件夾中。

例如:讓 K=10。 算法可以這樣描述:

  • 將您的數據集划分為 10 個大小相同的分區。
  • 取一個分區作為驗證子集。 按類將其排序到所需的文件夾中。
  • 其余分區應視為訓練子集並分類到所需文件夾中。
  • 為 val 和 train 子集創建 data_generators。
  • 訓練您的模型並使用您的架構保存它。
  • 對每個其他分區重復上述步驟(將一個分區作為 val,訓練其他分區),但現在您必須從保存文件加載模型。

恐怕此解決方案的代碼片段(包括排序腳本和分區字典形成腳本)太大而無法在此處提供,但如有必要,我很樂意分享。

暫無
暫無

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

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