Несколько автоматически обновляемых фрагментов массива - PullRequest
0 голосов
/ 28 июня 2019

Я создаю тензор 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...