मैं CIFAR-10 dataset के साथ काम करने की कोशिश कर रहा हूं जिसमें a special version for python शामिल है।python3 पिकल के साथ python2 cpikle द्वारा धारावाहिक डेटा को कैसे पढ़ा जाए?
यह बाइनरी फाइलों का एक सेट है, प्रत्येक 10k numpy matrices के शब्दकोश का प्रतिनिधित्व करता है। फ़ाइलों को स्पष्ट रूप से python2 cPickle
द्वारा बनाया गया था।
import cPickle
with open("data/data_batch_1", "rb") as f:
data = cPickle.load(f)
यह काम करता है वास्तव में महान:
मैं इस प्रकार को 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 से सीधे पढ़ सकता हूं?
मैं, cPickle
द्वारा यह लोड हो रहा है json
में डंपिंग और pickle
द्वारा इसे वापस पढ़ने की कोशिश की है, लेकिन numpy मैट्रिक्स स्पष्ट रूप से एक json फ़ाइल रूप में नहीं लिखा जा सकता है।
:
bytes
वस्तुओं के रूप में तार कि होगा लोड करने के लिए अगर आप इस सुधार लागू है, तो एक संदेश 'मिल लेखन त्रुटि : एक यूनिकोड वर्ण होना चाहिए, बाइट्स नहीं, आपका numpy संस्करण बहुत पुराना है और [this] (https://github.com/numpy/numpy/issues/4879) बग है। –लैटिन 1 और बाइट्स –
@ShimonDoodkin का उपयोग करने के लिए बेहतर हो सकता है: जो पूरी तरह से डेटा पर निर्भर करेगा। और सिर्फ इसलिए कि लैटिन -1 हमेशा काम करता है इसका मतलब यह नहीं है कि वास्तव में आपके पास लैटिन -1 डेटा था। –