Pythorch的稀疏KLU求解器
torch-sparse-solve的Python项目详细描述
火炬稀疏解算
稀疏PyTorch CPU张量的torch.solve
的替代方法
有效率的
KLU algorithm。在
仅CPU张量
这个图书馆是 SuiteSparse吉隆坡 算法。这意味着算法只针对 C阵列,因此仅适用于Pythorch CPU 张量。然而,对于足够大、足够稀疏的张量,它可能仍然是 值得做的GPU→CPU转换。在
使用
torch_sparse_solve
库提供了一个函数solve(A, b)
,它解决了批处理矩阵×批处理矩阵torch.float64
张量的系统Ax=b
(注意与torch.solve
相比的不同API):
importtorchfromtorch_sparse_solveimportsolvetorch.manual_seed(42)mask=torch.tensor([[[1,0,0],[1,1,0],[0,0,1]]],dtype=torch.float64)A=(mask*torch.randn(4,3,3,dtype=torch.float64)).to_sparse()b=torch.randn(4,3,2,dtype=torch.float64)x=solve(A,b)# compare to torch.solve:A=A.to_dense()print((x-torch.solve(b,A)[0]<1e-9).all())
True
注意事项
有两个主要的注意事项,你应该知道当使用
torch_sparse_solve.solve(A, b)
:
- 在
在A
在第一个维度(即批处理维度)中应该是“密集”的 应包含与批处理大小相同的元素。在 - 在
A
应该对批处理中的每个元素具有相同的稀疏模式。 如果不是这样,您有两个选择:- 为创建具有相同稀疏模式的新稀疏矩阵 批处理中的每一个元素都通过向稀疏项中添加零来实现 代表性。在
- 或在批处理维度上循环并按顺序求解,即。
对于
A
和b
中的每个元素,使用形状(1, m, m)
和{} 分别。在
安装
库可以与pip
一起安装:
请注意,不存在预制车轮。这意味着pip
将
尝试从源安装库。确保你有
为您的操作系统安装了必要的依赖项。在
依赖关系
Linux
在Linux上,安装PyTorch、scipy和suitesparse通常是 足够安装库(以及 开发人员工具)。在一个 康达环境:
conda install suitesparse scipy conda install pytorch -c pytorch pip install torch_sparse_solve
Windows
在Windows上,安装过程有点复杂,因为 通常不安装生成依赖项。为了安装这些, 从下载Visual Studio Community 2017here。 在安装期间,转到Workloads并选择以下选项 工作量:
- <>桌面开发用C++ +/LI>
- Python开发
然后转到Individual Components并选择以下内容 附加项目:
- VC++2015.3 v14.00(v140)桌面工具集
下载并安装微软VisualC++ here。在
在这些安装步骤之后,运行以下命令insidea x64 Native Tools命令提示符用于VS 2017,在激活 康达环境:
setDISTUTILS_USE_SDK=1 conda install suitesparse scipy conda install pytorch -c pytorch pip install torch_sparse_solve
许可证和信用证
©Floris Laporte 2020,LGPL-2.1
该库部分基于:
- SuiteSparse,LGPL-2.1
- kagami-c/PyKLU,LGPL-2.1
- scipy.sparse,BSD-3
- 项目
标签: