全球名称' col2im_6d_cython'未定义,CS231n

时间:2016-08-17 09:53:48

标签: python-2.7 cython anaconda deep-learning jupyter

我跟随CS231n并在执行任务时遇到问题2:ConvolutionalNetworks:global name 'col2im_6d_cython' is not defined

我认为问题是由于使用cython导入im2col_cython.pyx的函数失败。

我已经安装了Xcode 7.3.1,如下所示,但问题仍未解决。

Results of "gcc -v"

我在Anaconda的Jupyter中运行ipynb文件。有一个相关的discussion on reddit,但不幸的是,这里的解决方案是针对Windows,而不是Mac OS X.

感谢您的时间。

4 个答案:

答案 0 :(得分:4)

我想将我的输入添加为评论,但没有足够的声誉点来这样做。

当我关闭jupyter笔记本并再次打开它时,问题就解决了。我收到导入错误后编译了cython扩展,当.so文件可用时可能需要重新启动它。

答案 1 :(得分:1)

我通过2个简单的步骤解决了这个问题:

  1. 在终端中,在cs231n目录中运行python setup.py build_ext --inplace

  2. 然后重新打开笔记本电脑(如有必要,请关闭笔记本电脑,然后再次打开它);


注:我也使用!python ./cs231n/setup.py build_ext --inplace通过笔记本进行了尝试。 它不起作用!您必须使用终端在笔记本电脑外部进行操作。

答案 2 :(得分:0)

从python 3开始支持。转到setup_googlecloud.sh并更改该行 virtualenv .env 至 virtualenv -p python3 .env并再次运行设置,如在assignment1设置中所述。 在那之后运作良好..

答案 3 :(得分:0)

这也发生在我身上。

我的问题:

我看到创建的扩展文件名为“ im2col_cython.cp37-win_amd64.pyd”,并且导入仅查找im2col_cython,因此我将文件名更改为“ im2col_cython.pyd”,然后再次运行安装脚本。 现在,当我在笔记本中运行代码时,它找到了模块,但它说dll是使用其他python版本编译的。我使用Anaconda envs,事实证明,由于我是从cmd运行安装脚本的,因此它使用的Python版本与环境版本不同。我从cs231n目录(im2col_cython.cp37-win_amd64.pyd和im2col_cython.c)中删除了创建的文件,并再次运行了安装脚本,这次是从env Anaconda Prompt上运行的。

解决方案:

  • 删除已创建的文件(.c和.pyd文件)
  • 运行设置 环境提示下的脚本(不是纯cmd)
  • 更改.pyd 文件名放入im2col_cython.pyd

享受!