【问题标题】:loading dataset in jupyter notebook python在 jupyter notebook python 中加载数据集
【发布时间】:2017-04-11 11:05:35
【问题描述】:

我在 jupyter notebook python 中运行以下代码:

# Run some setup code for this notebook.

import random
import numpy as np
from cs231n.data_utils import load_CIFAR10
import matplotlib.pyplot as plt

# This is a bit of magic to make matplotlib figures appear inline in the notebook
# rather than in a new window.
%matplotlib inline
plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'

# Some more magic so that the notebook will reload external python modules;
# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython
%load_ext autoreload
%autoreload 2

然后是以下说明:

# Load the raw CIFAR-10 data.
cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'
X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)

# As a sanity check, we print out the size of the training and test data.
print ('Training data shape: ', X_train.shape)
print ('Training labels shape: ', y_train.shape)
print ('Test data shape: ', X_test.shape)
print ('Test labels shape: ', y_test.shape)

通过运行第二部分,我得到以下错误:

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-5-9506c06e646a> in <module>()
      1 # Load the raw CIFAR-10 data.
      2 cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'
----> 3 X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)
      4 
      5 # As a sanity check, we print out the size of the training and test data.

C:\Users\lenovo\assignment1\cs231n\data_utils.py in load_CIFAR10(ROOT)
     20   for b in range(1,6):
     21     f = os.path.join(ROOT, 'data_batch_%d' % (b, ))
---> 22     X, Y = load_CIFAR_batch(f)
     23     xs.append(X)
     24     ys.append(Y)

C:\Users\lenovo\assignment1\cs231n\data_utils.py in load_CIFAR_batch(filename)
      7   """ load single batch of cifar """
      8   with open(filename, 'rb') as f:
----> 9     datadict = pickle.load(f)
     10     X = datadict['data']
     11     Y = datadict['labels']

UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)

如何解决此错误?我正在使用 Annaconda3 运行此代码。上面的代码似乎是在 Annaonda2 版本中编写的。有什么解决这些错误的建议吗?

更多细节:

我正在尝试通过链接解决作业:http://cs231n.github.io/assignments2016/assignment1/

编辑:

添加包含 load_CIFAR 定义的 data_utils.py

import _pickle as pickle
import numpy as np
import os
from scipy.misc import imread

def load_CIFAR_batch(filename):
  """ load single batch of cifar """
  with open(filename, 'rb') as f:
    datadict = pickle.load(f)
    X = datadict['data']
    Y = datadict['labels']
    X = X.reshape(10000, 3, 32, 32).transpose(0,2,3,1).astype("float")
    Y = np.array(Y)
    return X, Y

def load_CIFAR10(ROOT):
  """ load all of cifar """
  xs = []
  ys = []
  for b in range(1,6):
    f = os.path.join(ROOT, 'data_batch_%d' % (b, ))
    X, Y = load_CIFAR_batch(f)
    xs.append(X)
    ys.append(Y)    
  Xtr = np.concatenate(xs)
  Ytr = np.concatenate(ys)
  del X, Y
  Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, 'test_batch'))
  return Xtr, Ytr, Xte, Yte

【问题讨论】:

    标签: python neural-network anaconda jupyter-notebook


    【解决方案1】:

    您正在加载的 pickle 文件很可能是使用 python 2 生成的。

    由于 pickle 在 Python2 和 Python3 中的工作方式存在根本差异,您可以尝试使用 latin-1 编码加载文件,假设 0-255 直接映射到字符。

    此方法需要进行一些完整性检查,因为它不能保证产生一致的数据。

    【讨论】:

    • 二进制模式不带编码参数
    • 我的错,我打算将它添加到泡菜负载中,请参阅我的编辑。
    • 现在错误刚刚更改为“UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 6: invalid start” 而不是 ascii 编解码器
    • 泡菜有可能是用不同版本的 Python 创建的吗? Python 2 和 3 泡菜的工作方式不同。否则我最好的猜测是您的文件已损坏。 stackoverflow.com/questions/28218466/…
    • 很有可能.... data_utils.py 包含 python 2.x 的代码,原始导入是 import cPickle 而不是 _pickle 我正在尝试将 python2 代码转换为 python3 以便它在我的 python3 中运行.x shell。我相信如果我可以将加载 cifar10 函数转换为精确的 python 3,问题就可以解决。你怎么看??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2018-07-11
    相关资源
    最近更新 更多