如何分配一个张量的子集,但仍然保持原来的张量?



我想让张量exp_scaled_pcs的主对角线归零,这样做我不想改变原来的张量,但我想把赋值的输出接收到一个新的张量zero_sim_exp_scaled_pcs

通过:

zero_sim_exp_scaled_pcs = torch.diagonal(exp_scaled_pcs, 0).zero_()

我注意到我也改变了原来的张量。我怎样才能保留它呢?

您可以使用Tensor.index_put

x = torch.randn(10, 10)
d = min(x.shape)
diag_indices = [torch.arange(d)] * x.dim()
y = x.index_put(diag_indices, torch.zeros(d))

最新更新