Keras 使用ImageDataGenerator注意事項
在實作影像辨識的時候,一般小數據集上我們常見作法就是直接將照片轉numpy.ndarray
直接載入記憶體來做後續的操作,但這種作法卻無法直接應用於大數據集上,因此Keras提供了一個非常方便的工具ImageDataGenerator
。
ImageDataGenerator
提供了資料增強以及過程中縮放尺寸以及設置batch_size
…等便利性功能,但是愈是便利性的功能就愈有一些問題。
我試著記錄個人遇過的問題,希望跟你遇到的問題相通。
常見問題集
- 驗證資料集的
ImageDataGenerator
是否需要執行資料增強?- 不需要,我們要做的是利用驗證資料集在訓練過程中同步驗證模型的泛化性,因此不做任何資料增強。(
rescale=1./255
除外)
- 不需要,我們要做的是利用驗證資料集在訓練過程中同步驗證模型的泛化性,因此不做任何資料增強。(
- 為何每次的
model.predict_generator
得到的結果都不一樣?(或者與直接model.predict
不一樣)- 在做
model.predict_generator
的時候記得設置shuffle=False
,因為執行model.predict_generator
之後我們會跟原始的label
做比較,如果打散資料集會造成你所得到的結果資料索引與原始資料集不同。 - 在每次執行任何的
generator
(i.e.evaluate_generator
,predict_generator
)之前都請執行一次generator.reset()
(依你所定義的物件名稱調整generator
)- 這麼做的理由在於,我們必須確保目前所指向的
generator.batch_index
是歸1
的,否則依然會造成所得結果數據異常。
- 這麼做的理由在於,我們必須確保目前所指向的
- 在做
沒有留言:
張貼留言