【pytorch】缺少LAPACK库(LAPACK library not found in compilation)

问题描述

使用pytorch的某些接口时,报错缺少LAPACK库,如:

行列式计算det

import torch

A = torch.randn(3, 3)
output = torch.linalg.det(A)
print(output)

报错:

RuntimeError: Calling torch.linalg.lu_factor on a CPU tensor requires compiling PyTorch with LAPACK. Please use PyTorch built with LAPACK support.

矩阵幂运算matrix_power的负数场景(需要求逆时)

x = torch.tensor(np.array([[2, 0, 0], [0, 2, 0], [0, 0, 2]]), dtype=torch.float32)
y = torch.matrix_power(x, -1)
print(y)

报错:

RuntimeError: inverse: LAPACK library not found in compilation

解决措施

在conda环境下安装lapack库(无用)

以为是缺少lapack库的依赖,遂尝试安装该库:
conda install lapack
安装失败,找不到该库。

pip install lapack
也安装失败,找不到该库。

网上查询后发现,conda默认的库用的是anaconda,里面不包括lapack,需要改用conda-forge库,才能找到lapack。
conda install -c conda-forge lapackpp
安装成功,但是pytorch还是运行不了。

使用官网安装指令重装pytorch,解决问题

到pytorch官网找了完整的安装指令,安装最新稳定版本的torch:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
安装后即可正常使用。
猜测是安装pytorch时,偷懒使用了指令 conda install torch,导致安装的依赖不全。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这个错误提示意味着 PyTorch 在编译时没有使用 LAPACK ,导致无法执行 `torch.inverse()` 函数。 要解决这个问题,你需要重新编译 PyTorch 并包含 LAPACK 。具体的步骤如下: 1. 安装 LAPACK 。你可以在 LAPACK 官方网站上下载并安装 LAPACK ,或者使用系统包管理器安装。在 Ubuntu 中,你可以使用以下命令安装 LAPACK : ``` sudo apt-get install liblapack-dev ``` 2. 安装 PyTorch 的依赖项。在编译 PyTorch 之前,你需要安装一些依赖项,可以使用以下命令安装: ``` sudo apt-get install -y python3-dev python3-pip python3-venv build-essential libatlas-base-dev gfortran ``` 3. 克隆 PyTorch并切换到合适的分支。你可以在 PyTorch 的 GitHub 页面上克隆 PyTorch,并切换到合适的分支。在这个例子中,我们将使用最新的稳定版分支 `v1.9.0`。 ``` git clone --recursive https://github.com/pytorch/pytorch cd pytorch git checkout v1.9.0 ``` 4. 安装 PyTorch。在切换到合适的分支后,你可以使用以下命令编译和安装 PyTorch: ``` export USE_CUDA=0 python3 setup.py install ``` 在编译时,你需要设置 `USE_CUDA` 环境变量为 0,以禁用 CUDA 支持。这是因为如果你的系统上没有安装 NVIDIA GPU 或者没有安装 CUDA 驱动,PyTorch 将无法使用 CUDA 加速。 5. 测试 PyTorch。在安装成功后,你可以启动 Python 并导入 PyTorch 模块进行测试,具体的步骤可以参考我之前的回答。如果一切正常,你将不再看到 `RuntimeError: inverse: LAPACK library not found in compilation` 的错误提示。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值