2

我正在嘗試使用Keras的內置圖像預處理功能來增加序列中的圖像。 我的數據集形狀爲(13200, 4, 168, 168, 1),包含13200個序列,每個序列由4個168x168px灰度圖像組成。是否可以對圖像序列使用圖像預處理?

當試圖在我的數據集,我得到運行datagen.flow()

ValueError: ('Input data in `NumpyArrayIterator` should have rank 4. You passed an array with shape', (13200, 4, 168, 168, 1)) 

我假設ImageDataGenerator不能夠正確地處理我的每個樣本4個的圖像序列。有沒有辦法做到這一點?

+0

你'y'看起來像什麼? –

+0

'y.shape =(13200,250)',因爲我有250個班級。 – Hagen

+0

好的 - 所以我的回答應該是正確的。 –

回答

2

嘗試通過定義一個新的生成:

def sequence_image_generator(x, y, batch_size, generator, seq_len=4): 
    new_y = numpy.repeat(y, seq_len, axis = 0) 
    helper_flow = generator.flow(x.reshape((x.shape[0] * seq_len, 
              x.shape[2], 
              x.shape[3], 
              x.shape[4])), 
           new_y, 
           batch_size=seq_len * batch_size) 
    for x_temp, y_temp in helper_flow: 
     yield x_temp.reshape((x_temp.shape[0]/seq_len, 
           seq_len, 
           x.shape[2], 
           x.shape[3], 
           x.shape[4])), y_temp[::seq_len,:] 
+0

謝謝你的回答。當我運行它時,我得到:'ValueError:X(圖像張量)和y(標籤)應該具有相同的長度。「因此我向'numpy.repeat()'添加了'axis = 0'。 現在我得到'ValueError:新數組的總大小必須保持不變'爲包含'yield'語句的最後一行。你知道這是什麼原因嗎? – Hagen

+1

立即嘗試。 ('y_temp [:: seq_len,:'') –

+0

同樣的錯誤。在調試過程中,我發現它實際上是導致錯誤的第一部分(重塑'x_temp')。 – Hagen