как присвоить значение тензору по индексу - PullRequest
1 голос
/ 23 марта 2020

Я определил четыре тензора, которые представляют index_x, index_y, index_z и значение, соответственно, и присвоил значение новому тензору, используя эти три индекса. Почему результаты двух заданий были разными?

import torch
import numpy as np
import random
import os

def seed_torch(seed=0):
    random.seed(seed)
    np.random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False

seed_torch(1)
a_list, b_list, c_list = [], [], []
for i in range(0, 512*512):
    a_ = random.randint(0, 399)
    b_ = random.randint(0, 399)
    c_ = random.randint(0, 199)
    a_list.append(a_)
    b_list.append(b_)
    c_list.append(c_)
a = torch.tensor(a_list)
b = torch.tensor(b_list)
c = torch.tensor(c_list)
v = torch.rand(512*512)
matrix1 = torch.zeros(400,400,200)
matrix2 = torch.zeros(400,400,200)
index=[a,b,c]
matrix1[index]=v
matrix2[index]=v
m = matrix1 - matrix2
print(m.sum())

print (m.sum ()) не равно нулю

1 Ответ

1 голос
/ 23 марта 2020

Не могу добавить комментарий, но когда я запускаю ваш точный код, он возвращает tensor(0.) на моей машине, поэтому, кажется, он работает просто отлично.

Кроме того, просто подсказка, а не для l oop

a_list, b_list, c_list = [], [], []
for i in range(0, 512*512):
    a_ = random.randint(0, 399)
    b_ = random.randint(0, 399)
    c_ = random.randint(0, 199)
    a_list.append(a_)
    b_list.append(b_)
    c_list.append(c_)
a = torch.tensor(a_list)
b = torch.tensor(b_list)
c = torch.tensor(c_list)

Вы также можете сделать:

a = torch.randint(400, (512*512,))
b = torch.randint(400, (512*512,))
c = torch.randint(200, (512*512,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...