Python、iPython笔记本实现详细信息

Python、iPython笔记本实现详细信息,python,ipython-notebook,Python,Ipython Notebook,我目前正在做这个:。正如你所看到的,这只是计算机视觉中一个非常基本的练习。但我很难实现其中的内容。基本上我这里有一个文件: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 c

我目前正在做这个:。正如你所看到的,这只是计算机视觉中一个非常基本的练习。但我很难实现其中的内容。基本上我这里有一个文件: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笔记本也不是很了解,现在我只知道如何在线查看它,但我仍然无法运行代码。我只是Python的新手,我对该语言所知道的只是在命令行中键入几行,它会发挥神奇的作用。这似乎太过分了。请帮帮我,非常感谢

更新:我发现了一个快速而肮脏的解决方案:将文件夹放入默认目录。但随后出现了两个新错误:

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)

多谢各位

如果您是python新手,那么这项作业会让您进入更深的领域——如果您从正确的角度出发,python会有一个温和的学习曲线

在开始编码之前,你应该先准备好并熟悉笔记本。请确保开始。安装依赖项是一件很麻烦的事(或者已经习惯了),所以我建议下载Anaconda Scientific Python发行版,它包含了您所需要的一切

要导入
cs231n
模块,最快的解决方案是将文件夹
cs231n
放在包含笔记本(或.py脚本)的文件夹中。稍后,您可以在谷歌上搜索
PYTHONPATH
,并在方便的时候进行设置

祝你好运


另外,我刚看了你的课程文件夹,看起来你的老师已经处理好了依赖关系!如果您按照说明操作,但没有成功,请与他或她联系。

我认为这两个错误都与python的兼容性有关。这个分配代码是用python2.7编写的,我想知道您是否在使用python3?如果你是,你最好改成python2.7


顺便说一句,这是一个非常晚的答案。

我在谷歌上搜索了PYTHONPATH,并遵循了他们的建议:设置一个环境变量,将其命名为PYTHONPATH,并将其目录指定给cs231文件夹。当我再次运行时,它确实找到了目录,但它产生了另一个奇怪的错误:将cPickle作为pickle导入;ImportError:没有名为“cPickle”的模块。我很困惑,如果您使用的是Python3,但尝试导入为Python2编写的代码,那么您报告的错误将会发生。这将导致许多奇怪的错误。听起来你需要抛弃python,安装2.7(ugh),最好是按照建议安装在virtualenv中。你有没有研究过指导老师的指导?它们看起来像是为你设计的。实际上我现在正在使用anaconda,但我认为它们有2.7版本。我试着按照网站上的指示去做,但这看起来很奇怪,你在上一堂课,老师和助教的工作就是帮助你。带上你的笔记本电脑,让别人帮你检查一下——这比让我们这些随机的陌生人猜测你的配置可能出了什么问题要好得多。
# 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