Pytorch 计算二进制矩阵和二维坐标列表之间的损失

Pytorch 计算二进制矩阵和二维坐标列表之间的损失,pytorch,Pytorch,我有一个PyTorch模型,它生成一个坐标列表,例如 >coords=模型(输入) 张量([[1.1000,3.8000,0.2000,4.4000,2.5000], [3.4000, 3.2000, 1.3000, 0.9000, 1.7000]]) 其中,coords[0]是x坐标,coords[1]是y坐标,表示像素值。这些像素值形成一个二进制“图像”: 索引=coords.round().long() >>>torch.sparse.FloatTensor(索引,torch.one(索

我有一个PyTorch模型,它生成一个坐标列表,例如

>coords=模型(输入)
张量([[1.1000,3.8000,0.2000,4.4000,2.5000],
[3.4000, 3.2000, 1.3000, 0.9000, 1.7000]])
其中,
coords[0]
是x坐标,
coords[1]
是y坐标,表示像素值。这些像素值形成一个二进制“图像”:

索引=coords.round().long() >>>torch.sparse.FloatTensor(索引,torch.one(索引.形状[1]),torch.Size([5,5])到密度() 张量([[0,0,0,0,0,0.]), [1., 0., 0., 0., 1.], [0., 0., 1., 0., 0.], [0., 1., 0., 0., 1.], [0., 0., 0., 0., 0.]]) 我想优化我的模型,使输出矩阵匹配二进制目标图像

然而,索引步骤是不可微的。
.long()
操作会导致

RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
在后退的一步

是否可以执行“2D one热编码”或其他操作,以可微的方式将浮点坐标列表转换为二进制矩阵