torch.asarray
-
torch.asarray(obj, *, dtype=None, device=None, copy=None, requires_grad=False) → Tensor -
Преобразует
objв тензор.objможет быть одним из:- тензор
- массив NumPy
- капсула DLPack
- объект, реализующий протокол буфера Python
- скаляр
- последовательность скаляров
Когда
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также является тензором с историей автографа, то возвращаемый тензор будет иметь ту же историю.
-
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).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