Я изучал основные уроки PyTorch и сталкивался с преобразованием между массивами NumPy и тензорами Torch. В документации написано:
Массив Torch Tensor и NumPy будут совместно использовать свои базовые области памяти, а изменение одного из них изменит другое.
Но, похоже, это не так в приведенном ниже коде:
import numpy as np
a = np.ones((3,3))
b = torch.from_numpy(a)
np.add(a,1,out=a)
print(a)
print(b)
В приведенном выше случае я вижу изменения, автоматически отражаемые в выводе:
[[2. 2. 2.]
[2. 2. 2.]
[2. 2. 2.]]
tensor([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]], dtype=torch.float64)
Но такого не происходит, когда я пишу что-то вроде этого:
a = np.ones((3,3))
b = torch.from_numpy(a)
a = a + 1
print(a)
print(b)
Я получаю следующий вывод:
[[2. 2. 2.]
[2. 2. 2.]
[2. 2. 2.]]
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
Что мне здесь не хватает?