-1

当尝试应用我在互联网上找到的一些代码时,我遇到了一个被腌制的数据集。现在要将我自己的数据集插入其中,我需要自己反转酸洗。读取泡菜的代码是:

import cPickle, gzip, numpy

# Load the dataset
f = gzip.open('mnist.pkl.gz', 'rb')
train_set, valid_set, test_set = cPickle.load(f)
f.close()

我现在想自己写泡菜:

with open(outfile) as f:
    train_set = allfiles[:len(allfiles)/3] 
    valid_set = allfiles[len(allfiles)/3:(len(allfiles)/3)*2] 
    test_set  = allfiles[(len(allfiles)/3)*2:]

    cPickle.dump((train_set,valid_set,test_set), outfile,0) 

但是我得到:

 TypeError: argument must have 'write' attribute

我的问题可能是什么?一个好的酸洗代码应该是什么样子的?

4

2 回答 2

2

您想使用文件对象,而不是文件名:

cPickle.dump((train_set,valid_set,test_set), f, 0) 

但是,您的输入也是 GZIP 压缩的:

with gzip.open(outfile, 'wb') as f:
    # ...
    cPickle.dump((train_set,valid_set,test_set), f, 0) 

请注意,您自己的代码也忘记为打开的文件对象声明正确的模式;open(outfile)不带参数以读取方式打开文件,写入将失败并出现IOError: File not open for writing异常。

于 2013-07-18T14:55:09.753 回答
0
cPickle.dump((train_set,valid_set,test_set), outfile,0) 

outfile只是一个文件名。你应该使用:

cPickle.dump((train_set,valid_set,test_set), f,0) 
于 2013-07-18T14:54:24.697 回答