我正在尝试加载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的无内存中。
答案 0 :(得分:0)
我卸载了32位版本的Anaconda并安装了64位版本(也使用了64位python),它似乎已经摆脱了这个问题。我仍然不确定为什么它之前没有用,因为它没有解决足够的内存来产生影响,但这似乎有所帮助。