我目前正在研究这个问题:http://cs231n.github.io/assignment1/。正如您所看到的,它只是计算机视觉中非常非常非常基本的练习。但是我很难实现其中的内容。基本上我在这里有这个文件:vision.stanford.edu/teaching/cs231n/assignment1.zip我需要让它运行。但在其中我发现第一行代码令人困惑:
import random
import numpy as np
from cs231n.data_utils import load_CIFAR10
import matplotlib.pyplot as plt
cs231n.data_utils无法识别,我不知道指定机器要知道的目录。而且我对iPython Notebook也不太了解,现在我只知道如何在线查看它但我仍然无法运行代码。我只是Python的新手,我所知道的语言就是那个我在命令行中键入了几行,它将完成魔术。这似乎太过分了。请帮帮我,非常感谢你!
更新:我找到了一个快速而又脏的解决方案:将文件夹放入默认目录。但随后出现了2个新错误:
1)首先出现了这个错误:在文件data_utils.py中有一行:import cPickle as pickle。它说:没有名为cPickle的模块。我必须将名称从cPickle更改为_pickle才能运行。 2)这些代码在这里:
# Load the raw CIFAR-10 data.
cifar10_dir = u'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-19-abf216ad1f9c> in <module>()
1 # Load the raw CIFAR-10 data.
2 cifar10_dir = u'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\son\assignment1\cs231n\data_utils.py in load_CIFAR10(ROOT)
20 for b in range(1,6):
21 f = os.path.join(ROOT, u'data_batch_%d' % (b, ))
---> 22 X, Y = load_CIFAR_batch(f)
23 xs.append(X)
24 ys.append(Y)
C:\Users\son\assignment1\cs231n\data_utils.py in load_CIFAR_batch(filename)
7 """ load single batch of cifar """
8 with open(filename.encode('utf-8'), u'rb') as f:
----> 9 datadict = pickle.load(f)
10 X = datadict[u'data']
11 Y = datadict[u'labels']
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6: ordinal not in range(128)
这是data_utils文件:
# import cPickle as pickle
import _pickle as pickle
import numpy as np
import os
def load_CIFAR_batch(filename):
""" load single batch of cifar """
with open(filename, u'rb') as f:
datadict = pickle.load(f)
X = datadict[u'data']
Y = datadict[u'labels']
X = X.reshape(10000, 3, 32, 32).transpose(0,2,3,1).astype(u"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, u'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, u'test_batch'))
return Xtr, Ytr, Xte, Yte
非常感谢!
答案 0 :(得分:0)
如果你是python的新手,那么你就可以通过这项任务进入深渊 - 如果你开始正确的话,python会有一个温和的学习曲线。
在编码之前,您应该设置并熟悉笔记本电脑。请参阅here开始使用。安装依赖项是一个熊(或习惯),因此我建议下载Anaconda Scientific Python发行版,其中包含您需要的所有内容。
要导入cs231n
模块,最快的解决方案是将文件夹cs231n
放在包含笔记本(或.py脚本)的文件夹中。稍后您可以google PYTHONPATH
并在方便时进行设置。
PS。我只是看了你的课程文件夹,看起来你的导师已经处理了依赖关系了!如果您按照指示操作并且无效,请与他或她联系。
答案 1 :(得分:0)
我认为这两个错误都与python的兼容性有关。这个赋值代码是用python2.7编写的,我想知道你是否使用python3?如果你是,你最好换成python2.7。
顺便说一下,这是一个非常晚的答案。