На CPU это torch.as_tensor(a)
то же самое, что torch.from_numpy(a)
для массива numpy, a
? Если нет, то почему бы и нет?
Из документации для torch.as_tensor
, если данные представляют собой ndarray
соответствующего dtype
, а device
- это cpu, копирование не будет выполнено.
Из документации для torch.from_numpy
:
Возвращенный тензор и ndarray
используют одну и ту же память. Изменения тензора будут отражены в ndarray
и наоборот.
В обоих случаях любые изменения результирующего тензора изменят исходный массив numpy.
a = np.array([[1., 2], [3, 4]])
t1 = torch.as_tensor(a)
t2 = torch.from_numpy(a)
t1[0, 0] = 42.
print(a)
# prints [[42., 2.], [3., 4.]]
t2[1, 1] = 55.
print(a)
# prints [[42., 2.], [3., 55.]]
Кроме того, в обоих случаях попытка изменить размер_ тензора приводит к ошибке.