Spec-Zone.ru › PyTorch 1

torch.asarray

torch.asarray(obj, *, dtype=None, device=None, copy=None, requires_grad=False) → Tensor

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

obj может быть одним из:

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

Когда obj является тензором, массивом NumPy или капсулой DLPack, возвращаемый тензор по умолчанию не будет требовать градиент, будет иметь тот же тип данных, что и obj, будет на той же устройстве и будет совместно использовать память с ним. Эти свойства можно контролировать с помощью ключевых аргументов dtype, device, copy, и requires_grad. Если возвращаемый тензор имеет другой тип данных, находится на другом устройстве или требуется копия, то он не будет совместно использовать память с obj. Если requires_grad является True, то возвращаемый тензор будет требовать градиент, и если obj также является тензором с историей автографа, то возвращаемый тензор будет иметь ту же историю.

Когда obj не является тензором, массивом NumPy или капсулой DLPack, но реализует протокол буфера Python, то буфер интерпретируется как массив байтов, сгруппированных в соответствии с размером типа данных, переданного ключевому аргументу dtype. (Если тип данных не передан, используется по умолчанию тип данных с плавающей точкой.) Возвращаемый тензор будет иметь указанный тип данных (или по умолчанию тип данных с плавающей точкой, если он не указан) и, по умолчанию, будет на устройстве CPU и будет совместно использовать память с буфером.

Когда obj не относится ни к одному из вышеперечисленного, а является скаляром или последовательностью скаляров, то возвращаемый тензор, по умолчанию, определит свой тип данных из значений скаляров, будет находиться на устройстве CPU и не будет совместно использовать память.

См. также

torch.tensor() создаёт тензор, всегда копирующий данные из входного объекта. torch.from_numpy() создаёт тензор, всегда совместно использующий память из массивов NumPy. torch.frombuffer() создаёт тензор, всегда совместно использующий память из объектов, реализующих протокол буфера. torch.from_dlpack() создаёт тензор, всегда совместно использующий память из капсул DLPack.

Parameters:

obj (object) – тензор, массив NumPy, капсула DLPack, объект, реализующий протокол буфера Python, скаляр или последовательность скаляров.

Keyword Arguments:
  • dtype (torch.dtype, optional) – тип данных возвращаемого тензора. Значение по умолчанию: None, которое приводит к тому, что тип данных возвращаемого тензора определяется из obj.
  • copy (bool, optional) – управляет тем, разделяет ли возвращаемый тензор память с obj. Значение по умолчанию: None, что приводит к тому, что возвращаемый тензор разделяет память с obj всякий раз, когда это возможно. Если True, то возвращаемый тензор не разделяет память. Если False, то возвращаемый тензор разделяет память с obj и вызывается ошибка, если это невозможно.
  • device (torch.device, optional) – устройство возвращаемого тензора. Значение по умолчанию: None, что приводит к использованию устройства obj.
  • requires_grad (bool, optional) – требуется ли градиент для возвращаемого тензора. Значение по умолчанию: False, что приводит к тому, что возвращаемый тензор не требует градиента. Если True, то возвращаемый тензор будет требовать градиента, и если obj также является тензором с историей автографа, то возвращаемый тензор будет иметь ту же историю.

Пример:

>>> 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).float()
>>> b = a + 2
>>> b
tensor([1., 2., 3.], grad_fn=<AddBackward0>)
>>> # Shares memory with tensor 'b', with no grad
>>> c = torch.asarray(b)
>>> c
tensor([1., 2., 3.])
>>> # Shares memory with tensor 'b', retaining autograd history
>>> d = torch.asarray(b, requires_grad=True)
>>> d
tensor([1., 2., 3.], 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] == t1.data_ptr()
False

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.asarray.html

Spec-Zone.ru

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