2016-06-23 6 views
1

Cifar-10データセットをロードしようとしています。使用しているコードはthisクラス(私は登録されていません)からです。私は、メモリエラーがあると話し続けています。それをロードするコードは次のとおりです。あるデータセットを読み込むときにPythonでメモリエラーが発生する

X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir) 

コールへ:

def load_CIFAR_batch(filename): 
    """ load single batch of cifar """ 
    with open(filename, 'rb') as f: 
    datadict = pickle.load(f) 
    X = datadict['data'] 
    Y = datadict['labels'] 
    X = X.reshape(10000, 3, 32, 32).transpose(0,2,3,1).astype("float")//This is the important line 
    Y = np.array(Y) 
    return X, Y 

それは上記の7行目で立ち往生として停止します。順番に呼び出します

def load_CIFAR10(ROOT): 
    """ load all of cifar """ 
    xs = [] 
    ys = [] 
    for b in range(1,6): 
    f = os.path.join(ROOT, 'data_batch_%d' % (b,)) 
    X, Y = load_CIFAR_batch(f)//this is the important line 
    xs.append(X) 
    ys.append(Y)  
    Xtr = np.concatenate(xs) 
    Ytr = np.concatenate(ys) 
    del X, Y 
    Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, 'test_batch')) 
    return Xtr, Ytr, Xte, Yte 

メモリエラー。
Windowsのタスクマネージャを使用してメモリ使用量を調べたところ、システムで実行中の他のプログラムが何であっても、実行するたびに〜800,000kbを使用していました。私は私のシステムにも8GBのRAMを持っています。また、過去のPythonではデータのギガバイトを使用していましたが、このプロジェクトでは800,000kbを超えません。奇妙なのは、タイプを「float32」に変更してから、約40万でメモリエラーが発生し、それ以上には上がらないということです。私はそれが違いを生むならIpythonを使っています。 誰が何が起こっているのか、これを修正する方法についてのアイデアはありますか?

編集:これは、約4GBのメモリが解放されたときにも発生しました。

答えて

0

私はアナコンダの32ビット版をアンインストールし、(また、64ビットのpythonを使用しています)、64ビットの1をインストールし、問題を取り除く得ているように見えました。私はまだ違いがあるために十分な記憶に対処していないので、なぜそれが以前にはうまくいかなかったのかはまだ分かりませんが、これは助けになったようです。

関連する問題