代码之家  ›  专栏  ›  技术社区  ›  Harry van Langen

sksparse.cholmod-断言错误

  •  0
  • Harry van Langen  · 技术社区  · 2 年前

    当我试图用cholmod分解CSC格式的大型稀疏矩阵时,我得到了一个断言错误。

    以下是一个简化的示例:

    import numpy as np
    from scipy.sparse import coo_array
    from sksparse.cholmod import cholesky
    
    row = np.array([0, 1])
    col = np.array([0, 1])
    val = np.array([1., 1.])
    
    
    A = coo_array((val, (row, col)), shape=(2, 2)).tocsc()
    
    factor = cholesky(A)
    

    这给了我以下错误:

    /tmp/ipykernel_59957/2822312894.py:12: CholmodTypeConversionWarning: converting matrix of class csc_array to CSC format
      factor = cholesky(A)
    
    ---------------------------------------------------------------------------
    AssertionError                            Traceback (most recent call last)
    Cell In[17], line 12
          7 val = np.array([1., 1.])
         10 A = coo_array((val, (row, col)), shape=(2, 2)).tocsc()
    ---> 12 factor = cholesky(A)
    
    File sksparse/cholmod.pyx:1189, in sksparse.cholmod.cholesky()
    
    File sksparse/cholmod.pyx:1216, in sksparse.cholmod._cholesky()
    
    File sksparse/cholmod.pyx:1126, in sksparse.cholmod._analyze()
    
    File sksparse/cholmod.pyx:411, in sksparse.cholmod._check_for_csc()
    
    AssertionError: 
    

    有人能告诉我我在这里做错了什么吗?

    顺便说一句,按以下方式操作还可以:

    import scipy.sparse as scsp
    factor = cholesky(scsp.csc_matrix(np.array([[ 1., 0.],
           [0.,  1.]]), dtype=np.float64))
    

    但这对于我的非常大的稀疏矩阵来说是低效的。

    0 回复  |  直到 2 年前