我在一台拥有CentOS Linux 7.3.1611(核心)操作系统的计算机上使用Python3.5.1。
我正在尝试使用PyTorch,并开始使用this tutorial。
不幸的是,示例中的#4行会产生问题:
>>> torch.Tensor(5, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'torch' has no attribute 'Tensor'
我不能理解这个错误。。。当然,在Torch中,“Torch”有一个属性“Tensor”。同样的命令也适用于Torch。
我怎样才能解决这个问题?
看起来笔记本是用
python2
运行的。请参阅notebook file(在文本编辑器中打开)的
metadata
部分修复
一。确保安装了ipython/jupyter的
python3.5
内核:python3.5 -m ipykernel install --name python3.5.1
2。运行
jupyter notebook
并更改笔记本中的内核版本:或者直接对
<notebook.ipynb>
进行黑客编辑(不推荐):您正在运行的Python二进制文件没有安装
torch
。它在模块搜索路径上有一个名为torch
的目录,它被视为namespace package:在模块搜索路径中没有
__init__.py
文件的任何目录都将被视为命名空间,前提是在搜索路径的任何其他位置都找不到其他同名的Python模块或包。这意味着,如果为Python二进制文件安装了
torch
,那么是否存在本地torch
目录并不重要:上面显示,
sys.path
首先列出torch
目录,然后是additional_path/torch
,但是当您尝试导入时,后者将作为torch
模块加载。这是因为在加载命名空间包之前,Python会优先考虑顶级模块和包。您需要为当前的Python二进制文件正确安装torch,请参见project homepage;当使用
pip
时,您可能希望将Python二进制文件与-m
开关一起使用:因此,用
python3.5 -m pip
替换主页指令pip3
;python3.5
也可以是Python二进制文件的完整路径。请为最新版本使用正确的
download.pytorch.org
URL。您不必将目录移到一边,但是如果您确实想并且不知道它的位置,请使用上面所示的
print(torch.__path__)
。同样,请注意,如果在本地目录中有一个
__init__.py
文件,它将成为一个常规包,并将pip
安装的包屏蔽到正常的site-packages
位置。如果您有这样一个包,或者一个本地torch.py
单文件模块,那么您需要重命名它们。在这种情况下,诊断信息看起来不同:注意区别:上面的名称空间包使用
<module 'name' (namespace)>
,而常规包使用)
, while a plain module uses
。首先找到这样的包和模块(不是命名空间包),然后停止搜索。如果找到的包或模块不是您想要的包或模块,则需要将它们移到一边或重命名它们。
相关问题 更多 >
编程相关推荐