我正在关注CS231n,在做作业2时遇到问题:ConvolutionalNetworks:
global name 'col2im_6d_cython' is not defined
。
我认为问题是由于从使用 cython 的
im2col_cython.pyx
导入函数失败。
我已经安装了Xcode 7.3.1,如下图,但问题仍然没有解决。
我正在 Anaconda 的 Jupyter 中运行 ipynb 文件。 reddit 上有一个相关的 discussion ,但不幸的是这里的解决方案是针对 Windows 的,而不是 Mac OS X。
感谢您的宝贵时间。
我想添加我的意见作为评论,但没有足够的声誉点来这样做。
当我关闭 jupyter 笔记本并再次打开它时,问题已解决。我在收到导入错误后编译了 cython 扩展,并且可能必须在 .so 文件可用时重新启动它。
我通过两个简单的步骤解决了这个问题:
在终端中,在cs231n目录中运行
python setup.py build_ext --inplace
。然后重新打开笔记本(如有必要,关闭笔记本,然后再次打开);
Ps.:我也使用
!python ./cs231n/setup.py build_ext --inplace
通过笔记本尝试了这一点。 这不起作用!您必须使用终端在笔记本之外进行操作。
我最近遇到了这个问题。我用谷歌搜索了很多,也尝试了卸载/重新安装 Anaconda。然而,它确实可以进一步发挥作用。所以我使用“which python”来找出正在使用哪个python。事实证明,默认使用 Anakonda 目录中包含的 python。然后我在我的 macOS 中尝试了 python2.7,它位于 /usr/bin/python2.7 中。虽然我收到了一些警告,但现在它的效果就像魅力一样。也许这是版本问题。在 macOS Sierra 10.12.4 中已解决。
Python 3 及以上版本支持。转到 setup_googlecloud.sh 并更改行 虚拟环境.env 到 virtualenv -p python3 .env 并再次运行设置,如分配1设置中所述。 之后效果很好..
我也想到了。
我的问题:
我看到创建的扩展文件名为“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 运行,它起作用了。
解决方案:
享受吧!
我终于解决了这个问题!!请注意,重点是确保 python 版本一致。
要检查笔记本的版本:输入 jupyter 笔记本
from platform import python_version python_version()
并且版本要与setup.py生成的pyd文件相同。
例如我的 pyd 文件是 im2col_cython.cp36-win_amd64.pyd。那么jupyter笔记本中的python版本必须是3.6,如果不是,请尝试在anaconda提示符下运行jupyter笔记本
我个人认为这么多人出现这个问题的主要原因是:anaconda env 和 system env 中的 python 版本不同