pytorch操作稀疏矩阵相乘

这是一个用pytorch操作稀疏矩阵的实例

在您需要操作很大的矩阵,例如100000100000大小,电脑存不下去的时候,可以考虑使用稀疏矩阵进行计算。注意pytorch只允许sparse和dense操作,不允许sparse和sparse相乘。在这个例子中,100000100000的矩阵和1000001000的矩阵相乘,结果是1000001000

from scipy.sparse import csc_matrix,find
import numpy as np
import torch
data1 = np.ones(100000*100)
row = np.ones(100000*100)
col = np.ones(100000*100)
for i in range(100000):
    for j in range(100):
        row[i*100+j]=i
        col[i*100+j]=j
index = np.vstack((row, col))
index = torch.LongTensor(index)
val = data1
val = torch.FloatTensor(val)
z = torch.ones(100000, 1000)
y = torch.sparse.FloatTensor(index, val, (100000, 100000))
x = torch.matmul(y,z)
print(x.shape)
#X = csc_matrix((data1, (row, col)), shape=(100000, 100000))
#print(X)```

你可能感兴趣的:(矩阵,pytorch,python,深度学习)