2016-12-21 41 views
2

我有我的Python腳本如下代碼:Python的 - 預處理大量的圖像數據 - 環凍結

def process_data(data): 
    features = [] 

    for i in range(int(len(data))): # Should iterate 33'000 times (length of data) 
     for j in range(3): 
      img = plt.imread(data[i][j].strip()) # Data is from a csv file 
      img = normalize(img) # Simple calculation 

      lis = img.flatten().tolist() 
      features += lis 

return features 

這應該運行約33'000×3次預處理整個數據。然而,在大約10'000-12'000次迭代之後,腳本從根本上變慢,凍結,有時我的機器(i7-3.6GHz,8GB RAM)也凍結。

我該怎麼辦?分割數據很困難。我被告知之前使用Keras'fit_generator,但我會怎麼做?

+0

你爲什麼要把它放在python列表中?將它存儲在一維numpy數組中非常有效。你也可以提供更多關於'數據'的信息嗎? – kmario23

+0

請不要使用'range(len(..))'。一個更好的選擇是'枚舉(..)' – kmario23

+0

@ kmario23我將使用枚舉,謝謝:)它是?好的,我會將它存儲在一維Numpy數組中。數據由3個圖像(rgb值)和0-50之間的值組成。因此,類似於[[[255,255,255],[255,255,255],..],[[255,255,255],[255,255,255],[] [ 255,255,255],[255,255,255],..],10.5] – Tutanchamunon

回答

0

根據這些圖像文件的大小,您可能會用完RAM並被迫交換。那會導致你的系統呆滯。 而不是收集所有的處理文件到列表中,你可以一次寫出一個嗎?

+0

嗯,很難。之後我需要拆分數據(因子1:4),然後將其保存到[pickled file](https://docs.python.org/2/library/pickle.html)中。任何想法如何我可以解決這個問題? – Tutanchamunon