-1

インターネットで見つけたコードを適用しようとすると、ピクルス化されたデータセットに遭遇しました。自分のデータセットを挿入するには、自分でピクルスを逆にする必要があります。pickle を読み取るコードは次のとおりです。

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 に答える