torch.asarray
-
torch.asarray(obj: Any, *, dtype: dtype | None, device: DeviceLikeType | None, copy: bool | None = None, requires_grad: bool | None = None) → Tensor -
Преобразует
objв тензор.objможет быть одним из следующих объектов:- тензор
- массив NumPy или скаляр NumPy
- капсула DLPack
- объект, реализующий буферный протокол Python
- скаляр
- последовательность скаляров
Если
obj— это тензор, массив NumPy или капсула DLPack, возвращаемый тензор по умолчанию будет иметь такое же значение requires_grad, какobj(по умолчанию False), тот же тип данных, находиться на том же устройстве и совместно использовать с ним память. Эти свойства можно контролировать с помощью именованных аргументовdtype,device,copyиrequires_grad. Если возвращаемый тензор имеет другой тип данных, находится на другом устройстве или запрошено создание копии, он не будет совместно использовать память сobj. Еслиrequires_grad— этоTrue(илиNone, иobjбыл тензором с установленным requires_grad), возвращаемому тензору потребуется градиент; еслиobjтакже является тензором с историей autograd, возвращаемый тензор будет иметь ту же историю.Если
obj— это не тензор, массив NumPy или капсула DLPack, но объект реализует буферный протокол Python, буфер интерпретируется как массив байтов, сгруппированных в соответствии с размером типа данных, переданного именованному аргументуdtype. (Если тип данных не указан, вместо него используется тип данных с плавающей точкой по умолчанию.) Возвращаемый тензор будет иметь указанный тип данных (или тип данных с плавающей точкой по умолчанию, если тип не указан) и по умолчанию находиться на устройстве CPU и совместно использовать память с буфером.Если
obj— скаляр NumPy, возвращаемый тензор будет тензором нулевой размерности на CPU, не совместно использующим память с исходным объектом (то естьcopy=True). По умолчанию используется тип данных PyTorch, соответствующий типу данных скаляра NumPy.Если
objне относится ни к одному из перечисленных выше типов, но является скаляром или последовательностью скаляров, возвращаемый тензор по умолчанию определит свой тип данных по значениям скаляров, будет находиться на текущем устройстве по умолчанию и не будет совместно использовать память с исходным объектом.См. также
torch.tensor()создает тензор, всегда копируя данные из входного объекта.torch.from_numpy()создает тензор, всегда совместно использующий память с массивами NumPy.torch.frombuffer()создает тензор, всегда совместно использующий память с объектами, реализующими буферный протокол.torch.from_dlpack()создает тензор, всегда совместно использующий память с капсулами DLPack.- Параметры:
-
obj (object) — тензор, массив NumPy, капсула DLPack, объект, реализующий буферный протокол Python, скаляр или последовательность скаляров.
- Именованные аргументы:
-
-
dtype (
torch.dtype, необязательно) — тип данных возвращаемого тензора. По умолчанию:None, что позволяет определить тип данных возвращаемого тензора поobj. -
copy (bool, необязательно) — определяет, будет ли возвращаемый тензор совместно использовать память с
obj. По умолчанию:None, что позволяет возвращаемому тензору совместно использовать память сobj, если это возможно. ЕслиTrue, возвращаемый тензор не будет совместно использовать память с исходным объектом. ЕслиFalse, возвращаемый тензор будет совместно использовать память сobj; если это невозможно, возникнет ошибка. -
device (
torch.device, необязательно) — устройство возвращаемого тензора. По умолчанию:None, что приводит к использованию устройстваobj. Если жеobj— последовательность Python, будет использоваться текущее устройство по умолчанию. -
requires_grad (bool, необязательно) — требуется ли градиент для возвращаемого тензора. По умолчанию:
None, что позволяет определить значение requires_grad возвращаемого тензора поobj. ЕслиTrue, возвращаемому тензору потребуется градиент; еслиobjтакже является тензором с историей autograd, возвращаемый тензор будет иметь ту же историю.
-
dtype (
Пример:
>>> a = torch.tensor([1, 2, 3]) >>> # Shares memory with tensor 'a' >>> b = torch.asarray(a) >>> a.data_ptr() == b.data_ptr() True >>> # Forces memory copy >>> c = torch.asarray(a, copy=True) >>> a.data_ptr() == c.data_ptr() False >>> a = torch.tensor([1., 2., 3.], requires_grad=True) >>> b = a + 2 >>> b tensor([3., 4., 5.], grad_fn=<AddBackward0>) >>> # Shares memory with tensor 'b', with no grad >>> c = torch.asarray(b, requires_grad=False) >>> c tensor([3., 4., 5.]) >>> # Shares memory with tensor 'b', retaining autograd history >>> d = torch.asarray(b, requires_grad=True) >>> d tensor([3., 4., 5.], grad_fn=<AddBackward0>) >>> # Shares memory with tensor 'b', retaining autograd history >>> e = torch.asarray(b) >>> e tensor([3., 4., 5.], grad_fn=<AddBackward0>) >>> array = numpy.array([1, 2, 3]) >>> # Shares memory with array 'array' >>> t1 = torch.asarray(array) >>> array.__array_interface__['data'][0] == t1.data_ptr() True >>> # Copies memory due to dtype mismatch >>> t2 = torch.asarray(array, dtype=torch.float32) >>> array.__array_interface__['data'][0] == t2.data_ptr() False >>> scalar = numpy.float64(0.5) >>> torch.asarray(scalar) tensor(0.5000, dtype=torch.float64)
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.asarray.html