我目前正在研究:http://cs231n.github.io/assignment1/。正如你所看到的,它只是計算機視覺中非常非常非常非常基本的練習。但是我很難實施其中的內容。基本上我在這裏有這個文件:vision.stanford.edu/teaching/cs231n/assignment1.zip,我需要讓它運行。但在它我發現的第一行代碼是混亂:Python,iPython Notebook實現細節混淆
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
非常感謝您!
我已經搜索了PYTHONPATH,並且我遵循了他們的建議之一:設置一個環境變量,將其命名爲PYTHONPATH,並將其目錄指定到cs231文件夾。當我再次運行時,它確實找到了目錄,但它又產生了另一個奇怪的錯誤:將cPickle導入爲pickle; ImportError:沒有名爲'cPickle'的模塊。我很困惑 – TruongTroll
如果您使用的是python 3,但是您正在嘗試導入爲python 2編寫的代碼,那麼您報告的錯誤將會發生。這將導致很多奇怪的錯誤。聽起來像你需要拋棄你的python並安裝2.7(呃),最好是在virtualenv建議。 – alexis
你有沒有學習你的導師指導?他們看起來像是爲了給你設置一切。 – alexis