问题描述
使用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,导致安装的依赖不全。