【发布时间】:2014-08-06 02:05:35
【问题描述】:
我使用以下内容制作了一个泡菜文件。
from PIL import Image
import pickle
import os
import numpy
import time
trainpixels = numpy.empty([80000,6400])
trainlabels = numpy.empty(80000)
validpixels = numpy.empty([10000,6400])
validlabels = numpy.empty(10000)
testpixels = numpy.empty([10408,6400])
testlabels = numpy.empty(10408)
i=0
tr=0
va=0
te=0
for (root, dirs, filenames) in os.walk(indir1):
print 'hello'
for f in filenames:
try:
im = Image.open(os.path.join(root,f))
Imv=im.load()
x,y=im.size
pixelv = numpy.empty(6400)
ind=0
for ii in range(x):
for j in range(y):
temp=float(Imv[j,ii])
temp=float(temp/255.0)
pixelv[ind]=temp
ind+=1
if i<40000:
trainpixels[tr]=pixelv
tr+=1
elif i<45000:
validpixels[va]=pixelv
va+=1
else:
testpixels[te]=pixelv
te+=1
print str(i)+'\t'+str(f)
i+=1
except IOError:
continue
trainimage=(trainpixels,trainlabels)
validimage=(validpixels,validlabels)
testimage=(testpixels,testlabels)
output=open('data.pkl','wb')
pickle.dump(trainimage,output)
pickle.dump(validimage,output)
pickle.dump(testimage,output)
现在我正在使用以下代码的 load_data() 函数来解压: http://www.deeplearning.net/tutorial/code/logistic_sgd.py 通过运行调用 http://www.deeplearning.net/tutorial/code/rbm.py
但它返回以下错误。
cPickle.UnpicklingError: A load persistent id instruction was encountered,
but no persistent_load function was specified.
似乎数据结构无与伦比,但我不知道它应该是什么..
作为参考,pickle 文件大小超过 16GB,其 gzip 超过 1GB
【问题讨论】:
-
这很奇怪。您通过 I/O 顺序地腌制三个结构,然后尝试将它们作为一个元组取消腌制。您可以尝试使用
pickle.dump((trainimage, validimage, testimage), output)挑选它们吗? -
@SteveK 这有可能解决问题吗?腌制文件花了大约 3 个小时,所以在不确定的情况下,我有点犹豫......
-
@SteveK btw cPickle.load(f) 本身似乎会导致错误,所以我不确定我将它们作为元组解开的方式是否是原因..
-
我明白了。我发现酸洗和解酸很聪明。但是你不会像腌制一样去腌制,所以它不能工作。在这里,您想取消腌制一个元组,但您还没有腌制一个元组。您需要做的是打开文件以进行 unpickling,然后依次
pickle.load每个对象。 -
你给
f分配了什么?