Замена значений в PyTorch
Запись по индексу работает не только для чтения. Слева от знака равенства стоит ячейка тензора, справа новое значение. После присваивания тензор хранит обновлённое число.
Создадим одномерный ряд и заменим
элемент с индексом 1, затем
выведем весь ряд:
import torch
scores = torch.tensor([4, 5, 3])
scores[1] = 10
print(scores) # выведет tensor([ 4, 10, 3])
Тот же приём работает в таблице. Создадим двумерный тензор и заменим одну ячейку по номеру строки и столбца:
import torch
grid = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
grid[0, 2] = 30
print(grid) # выведет tensor([[ 1, 2, 30], [ 4, 5, 6]])
Слева от равенства можно указать фрагмент ряда. Справа одно число запишется во все выбранные ячейки, а список той же длины задаёт значение для каждой ячейки по порядку:
import torch
temps = torch.tensor([10, 20, 30, 40])
temps[1:3] = 0
print(temps) # выведет tensor([10, 0, 0, 40])
marks = torch.tensor([1, 2, 3, 4, 5])
marks[0:3] = torch.tensor([10, 20, 30])
print(marks) # выведет tensor([10, 20, 30, 4, 5])
Соберите ряд из чисел 2,
4 и 6, замените его
среднюю ячейку на 0 и
выведите ряд.
Соберите таблицу 2 на 2
из нулей, запишите 9 в
нижнюю правую ячейку и выведите
таблицу.
Соберите ряд из пяти чисел 0,
замените его три центральные ячейки
списком [8, 9, 10] и выведите
ряд.