加载数据集时Python中的内存错误

时间:2016-06-23 03:45:53

标签: python image memory

我正在尝试加载Cifar-10数据集。我使用的代码来自this类(虽然我没有注册),我不断被告知存在内存错误。加载它的代码是:

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的无内存中。

1 个答案:

答案 0 :(得分:0)

我卸载了32位版本的Anaconda并安装了64位版本(也使用了64位python),它似乎已经摆脱了这个问题。我仍然不确定为什么它之前没有用,因为它没有解决足够的内存来产生影响,但这似乎有所帮助。