2016-06-23 19 views
1

我正試圖加載Cifar-10數據集。我正在使用的代碼是從this類(我沒有登記,但是),我不斷得知有一個內存錯誤。加載它的代碼是:加載數據集時Python中的內存錯誤

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

這是一個呼籲:

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 

進而調用:

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和一個停止內存錯誤。
我使用Windows任務管理器查看內存使用情況,每次運行它時都使用〜800,000kb,而不管其他程序在我的系統上運行。我的系統上也有8GB的RAM。而且,在過去,python使用了千兆字節的數據,但在這個項目上它不會超過800,000kb。另外奇怪的是,我將類型改爲「float32」,然後我得到了400,000的內存錯誤,並且不會比這更高。如果它有所作爲,我正在使用Ipython。 有沒有人有什麼想法或如何解決這個問題?

編輯:這也發生在大約4GB的內存空閒。

回答

0

我卸載了Anaconda的32位版本並安裝了64位版本(它也使用64位python),它似乎已經擺脫了這個問題。我仍然不確定它爲什麼不起作用,因爲它沒有提供足夠的記憶來改變它,但這似乎有所幫助。