这个错误是因为使用了pytorch的sparse张量,然后调用了其中的.values()
或者.indices()
方法出错的。只要对应改成._values()
或者._indices()
就可以了:
>>> s.values()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: Cannot get values on an uncoalesced tensor, please call .coalesce() first
>>> s._values()
tensor([[3, 4],
[5, 6],
[7, 8]])
这是因为sparse tensor分为coalesced和uncoalesced,它们调用的方法不同,coalesced对应的是.values()
和.indices()
,而uncoalesced对应的是._values()
和._indices()
,详细可参考这里。要判断一个sparse tensor是否coalesced,可以使用方法.is_coalesced()
。