Spec-Zone.ru › PyTorch 2.14

torch.asarray

torch.asarray(obj: Any, *, dtype: dtype | None, device: DeviceLikeType | None, copy: bool | None = None, requires_grad: bool | None = None) → Tensor

Преобразует obj в тензор.

obj может быть одним из следующих объектов:

  1. тензор
  2. массив NumPy или скаляр NumPy
  3. капсула DLPack
  4. объект, реализующий буферный протокол Python
  5. скаляр
  6. последовательность скаляров

Если 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, возвращаемый тензор будет иметь ту же историю.

Пример:

>>> 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API