を含むCIFAR-10 datasetで作業しようとしています。シリアル化されたデータをpython2で読み取る方法cPikle with python3 pickle?
バイナリファイルのセットであり、それぞれが10k個のnumpy行列の辞書を表します。ファイルはpython2 cPickle
によって明らかに作成されました。これは本当に素晴らしい作品
:
は、私は次のようにpython2からそれをロードしようとしました。私は(それが代わりにないcPickle
が、
pickle
を持っている)のpython3からデータをロードしようとした場合しかし、それは失敗します。
import pickle
with open("data/data_batch_1", "rb") as f:
data = pickle.load(f)
次のエラーで失敗した場合:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
私は何とか変換することができますpython3から読み込み可能な新しいデータセットへのオリジナルデータセット?それとも、私は何とかpython3 direrctlyからそれを読むことができますか?
私は、cPickle
ことによってそれをロードjson
にそれをダンプし、pickle
で戻ってそれを読んで試してみたが、numpyの行列が明らかにJSONファイルとして書き込むことができません。
を:あなたのnumpyバージョンは古すぎ、[this](https://github.com/numpy/numpy/issues/4879)のバグを持っています。 –
latin1を使用し、バイトを使わない方が良いかもしれません。 –
@ShimonDoodkin:データに完全に依存します。そしてLatin-1が常に機能するということは、あなたが実際にLatin-1データを持っていたという意味ではありません。 –