Как изменить конкретное значение при использовании для цикла в torch.tensor? - PullRequest
0 голосов
/ 26 июня 2019

Я запутался в логике этого кода при реализации локальной дифференциальной конфиденциальности.

Я пытаюсь реализовать некоторую логику с этими данными:

Когда первый бросок монеты равен 0, результат должен быть точно таким же, как и второй бросок монеты.

Когда первый бросок монеты равен 1, результат должен быть точно таким же, как и у самой записи.

coin flips: 12       entries: 0     1
            00                0  |  0
            01                1  |  1
            10                0  |  1                
            11                0  |  1 

для монетных сальто; 0: хвосты и 1: головы

Как изменить конкретное значение при использовании цикла for в torch.tensor? (пример: для записи в БД проверьте оператор и измените запись)

Я пробовал много вещей, таких как torch.tensor.where через torch.tensor docs . Но пока не могу решить.

def get_parallel_db(db, remove_index):
    return torch.cat((db[0:remove_index], 
                      db[remove_index+1:]))

def get_parallel_dbs(db):

    parallel_dbs = list()

    for i in range(len(db)):
        pdb = get_parallel_db(db, i)
        parallel_dbs.append(pdb)

    return parallel_dbs

def create_db_and_parallels(num_entries):

    db = torch.rand(num_entries) > 0.5
    pdbs = get_parallel_dbs(db)

    return db, pdbs

def flip_coin():    
    coin = torch.rand(2) > 0.5 # 1 for heads and 0 for tails
    return coin.float()

def decide_db(n_entries):

    db, _ = create_db_and_parallels(n_entries)
    db = db.float()
    print(db)

    for entry in db:
        coin = flip_coin()
        print("coins:" , coin[0], coin[1])
        if coin[0] == 0:
            print("coin1:" , coin[1])
            #db[entry==entry] = coin[1]
        else: 
            print("entry" , entry)
            #db[entry==entry] = entry
    return db

decide_db(10)

Ожидаемый результат должен быть таким, как я упоминал выше. Но фактический вывод чего-то еще чего я не хочу, потому что мне не удалось изменить конкретное значение entry в тензоре db .

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