2016-12-21 13 views
2

をフリーズ:パイソン - 画像データの多くを前処理 - ループは私の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のリストに入れたいですか? 1D numpy配列に格納するのはずっと効率的です。また、 'データ 'の見た目についてもっと詳しく知りたいですか? – kmario23

+0

そして、 'range(len(..))'を決して使用しないでください。より良いオプションは 'enumerate(..)'です – kmario23

+0

@ kmario23私は列挙を使用します、ありがとう:)それは?さて、私はそれを1D 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が不足して強制的にスワップする可能性があります。それはシステムが低速になる原因になります。 処理されたすべてのファイルをリストに集める代わりに、一度に1つずつ書き出すことはできますか?

+0

うーん、難しいです。それ以降のデータを分割し(要素1:4)、[pickled file](https://docs.python.org/2/library/pickle.html)に保存する必要があります。どのように私はこれを解決することができますか? – Tutanchamunon

関連する問題