是否可以从 pytorch 张量中引用删除元素?

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

目前,我正在尝试删除与 pytorch 中的索引相对应的向量中的元素,但是,它不断使用我当前使用的方法创建额外的副本。

这在幕后是有道理的;我认为内存地址可以保持不变的唯一方法是张量像链表一样实现。

话虽如此,是否可以从 PyTorch 张量中引用删除元素。即是否可以从张量中删除一个元素,使得具有删除索引的张量和旧张量具有相同的内存地址。

我已经尝试过的方法(但涉及创建副本/新内存地址)涉及(伪代码)...

  1. new_data = torch.cat((数据[:i], 数据[i+1:))
  2. data[torch.LongTensor(indices_to_keep)] 其中indices_to_keep = [范围内索引的索引(data.shape[0]) if index != i]
memory pytorch tensor
1个回答
0
投票

据我了解,您不需要特殊的函数来实现这种行为。如果将现有张量分配给新变量,则该范围内的两个变量名称将指向相同的张量。

x = torch.arange(5)
> tensor([0, 1, 2, 3, 4])

y = x # assign to y

# change y[0] which is x[0]
y[0] = -1 

x
> tensor([-1,  1,  2,  3,  4])
© www.soinside.com 2019 - 2024. All rights reserved.