在传播梯度时构造稀疏张量?

问题描述 投票:0回答:1

我有与此类似的代码,我想做得更快:

# indices: indices of a 3d tensor
# values associated to the indices


result = torch.zeros((L, N, N))
for idx, (i,j,k) in enumerate(indices):
        mask = torch.zeros_like(result)
        mask[i][j][k] = 1.0
        img = img + mask * values[idx]

现在,即使我选择制作稀疏掩模,我也注意到每次迭代运行速度都变慢。对于传播

img = func(indices, values) 

形式的梯度的函数,是否有一个简单的解决方案

我正在寻找一种利用矢量化或/和稀疏数据结构的解决方案

python pytorch
1个回答
0
投票

解决方案就像构造一个新的稀疏 coo 张量一样简单。

value_tensor = torch.sparse_coo_tensor(indices=indices, values=values, size=(L, N, N))
© www.soinside.com 2019 - 2024. All rights reserved.