循环导入尝试导入 functorch

问题描述 投票:0回答:1

我尝试在 python 3.9.7 中导入 functorch 和 torch

import torch
from functorch import vmap, grad

遇到循环导入问题。

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/var/folders/4p/5v2n8wpn58v6xw674tjlss680000gn/T/ipykernel_64234/1530828949.py in <module>
      1 import torch
----> 2 from functorch import vmap, grad

/usr/local/lib/python3.11/site-packages/functorch/__init__.py in <module>
      5 # LICENSE file in the root directory of this source tree.
      6 import torch
----> 7 from . import _C
      8 
      9 # Top-level APIs. Please think carefully before adding something to the

ImportError: cannot import name '_C' from partially initialized module 'functorch' (most likely due to a circular import) (/usr/local/lib/python3.11/site-packages/functorch/__init__.py)

有什么办法吗?这是软件包中的错误吗? 在这里提交这个,因为我找不到一个简单的修复方法

我多次尝试重新安装 torch 和 functorch。无济于事。

python-3.x jupyter-notebook pytorch torch
1个回答
0
投票

这很可能是因为

functorch
自 PyTorch 2.0 起已被弃用。他们网站上的公告说:

我们已经将 functorch 集成到 PyTorch 中。作为集成的最后一步,从 PyTorch 2.0 开始不推荐使用 functorch API。请改用 torch.func API,并查看 迁移指南docs 了解更多详情。

由于您还导入了

torch
,这很可能导致循环导入错误,因为该包也在尝试导入
functorch
。由于它已被弃用,强烈建议您改用
torch.func

如果你想使用

vmap
grad
,你可以删除
functorch
的导入并改用以下内容。

代替:

functorch.grad

用途:

torch.func.grad()

代替:

functorch.vmap

使用:

torch.vmap() # or you can use torch.func.vmap()

查看他们的文档以获取其他迁移技巧。上面贴了链接。

© www.soinside.com 2019 - 2024. All rights reserved.