如何在 SciPy 中创建 (0,N) 形压缩稀疏矩阵?
How to create (0,N)-shape compressed sparse matrix in SciPy?
我依赖于一个开源库 Detectron,它在 SciPy 中初始化压缩稀疏行 (CSR) 矩阵,形状为 (0,N),like so (link 到 GitHu 仓库中的相关行):
entry['gt_overlaps'] = scipy.sparse.csr_matrix(
np.empty((0, self.num_classes),
dtype=np.float32))
但是我可用的 SciPy 版本 (0.12.1) 不支持这种 (0,N) 形状,并给出一个 ValueError:
File
"/mnt/nfs/work1/elm/arunirc/Tools/detectron/lib/datasets/json_dataset.py",
line 150, in _prep_roidb_entry
np.empty((0, self.num_classes), dtype=np.float32) File "/usr/lib64/python2.7/site-packages/scipy/sparse/compressed.py", line
66, in init
self._set_self( self.class(coo_matrix(arg1, dtype=dtype)) ) File "/usr/lib64/python2.7/site-packages/scipy/sparse/coo.py", line
184, in init
self.shape = M.shape File "/usr/lib64/python2.7/site-packages/scipy/sparse/base.py", line 74, in
set_shape
raise ValueError('invalid shape') ValueError: invalid shape
是否有确实支持创建此类 CSR 数组的 SciPy 版本?谢谢!
最近还可以:
In [286]: scipy.sparse.csr_matrix(
...: np.empty((0, 3),
...: dtype=np.float32))
...:
Out[286]:
<0x3 sparse matrix of type '<class 'numpy.float32'>'
with 0 stored elements in Compressed Sparse Row format>
In [287]: scipy.__version__
Out[287]: '1.0.0'
这不是一个非常有用的形状,但我想不出它无效的概念原因。
我依赖于一个开源库 Detectron,它在 SciPy 中初始化压缩稀疏行 (CSR) 矩阵,形状为 (0,N),like so (link 到 GitHu 仓库中的相关行):
entry['gt_overlaps'] = scipy.sparse.csr_matrix(
np.empty((0, self.num_classes),
dtype=np.float32))
但是我可用的 SciPy 版本 (0.12.1) 不支持这种 (0,N) 形状,并给出一个 ValueError:
File "/mnt/nfs/work1/elm/arunirc/Tools/detectron/lib/datasets/json_dataset.py", line 150, in _prep_roidb_entry np.empty((0, self.num_classes), dtype=np.float32) File "/usr/lib64/python2.7/site-packages/scipy/sparse/compressed.py", line 66, in init self._set_self( self.class(coo_matrix(arg1, dtype=dtype)) ) File "/usr/lib64/python2.7/site-packages/scipy/sparse/coo.py", line 184, in init self.shape = M.shape File "/usr/lib64/python2.7/site-packages/scipy/sparse/base.py", line 74, in set_shape raise ValueError('invalid shape') ValueError: invalid shape
是否有确实支持创建此类 CSR 数组的 SciPy 版本?谢谢!
最近还可以:
In [286]: scipy.sparse.csr_matrix(
...: np.empty((0, 3),
...: dtype=np.float32))
...:
Out[286]:
<0x3 sparse matrix of type '<class 'numpy.float32'>'
with 0 stored elements in Compressed Sparse Row format>
In [287]: scipy.__version__
Out[287]: '1.0.0'
这不是一个非常有用的形状,但我想不出它无效的概念原因。