Я создаю тензор pytorch x, и я хочу иметь два автоматически обновляемых среза этого тензора, x_known, x_unknown.Идея состоит в том, что x_known = x [idxs_known] и x_unknown = x [idxs_unknown].Это начинается хорошо, но проблема в том, что если бы я обновлял элементы в одном из 3, я бы хотел, чтобы это отразилось и на других.
Я все еще довольно плохо знаком с Python, но насколько я понимаю, я хочу, чтобы x_known и x_uknown были мелкими копиями x?До сих пор я потратил около часа, чтобы посмотреть, смогу ли я сделать эту работу, но по какой-то причине я не могу найти способ сделать эту работу.
import torch
class Set:
def __init__(self,x,ik,iu):
self.x = x #Full set
self.ik = ik #Indices of known subset
self.iu = iu #Indices of unknown subset
self.xk = x[ik] #Known subset
self.xu = x[iu] #Unknown subset
x=torch.Tensor([1.0, 2.0, 3.0, 4.0])
ik=[0,1]
iu=[2,3]
z=Set(x,ik,iu)
z.xu[0] =10 #Change a number in xu
print(z.x) #I want the 10 to show up in this tensor
Я не совсем уверен, почему вышеупомянутоевыходит из строя.Я вижу две причины, почему он может потерпеть неудачу.1) Копия не мелкая.2) z.xu [0] = 10, не изменяет значение элемента тензора, а скорее переназначает его другому элементу тензора со значением 10.