torch.frombuffer
-
torch.frombuffer(buffer, *, dtype, count=-1, offset=0, requires_grad=False) → Tensor -
Создаёт одномерный
Tensorиз объекта, реализующего протокол буфера Python.Пропускает первые
offsetбайтов в буфере и интерпретирует оставшиеся сырые байты как одномерный тензор типаdtypeсcountэлементами.Обратите внимание, что должно выполняться одно из следующих условий:
1.
countявляется положительным ненулевым числом, и общее количество байтов в буфере меньшеoffsetплюсcountумноженное на размер (в байтах)dtype.2.
countотрицательно, и длина (количество байтов) буфера минусoffsetкратна размеру (в байтах)dtype.Возвращаемый тензор и буфер делят одну и ту же память. Изменения в тензоре будут отражаться в буфере и наоборот. Возвращаемый тензор не может быть изменён.
Примечание
Эта функция увеличивает счётчик ссылок для объекта, владеющего общей памятью. Поэтому эта память не будет освобождена до тех пор, пока возвращаемый тензор не выйдет из области видимости.
Предупреждение
Поведение этой функции неопределённо, если ей передаётся объект, реализующий протокол буфера, данные которого не находятся в ЦП. Это может привести к ошибке сегментации.
Предупреждение
Эта функция не пытается вывести
dtype(поэтому она не является необязательной). Передача другогоdtype, чем у источника, может привести к неожиданному поведению.- Параметры
-
buffer (объект) – объект Python, который предоставляет интерфейс буфера.
- Ключевые аргументы
-
-
dtype (
torch.dtype) – желаемый тип данных возвращаемого тензора. - count (целое число, необязательно) – количество желаемых элементов для чтения. Если отрицательно, будут считаны все элементы (до конца буфера). По умолчанию: -1.
- offset (целое число, необязательно) – количество байтов для пропуска в начале буфера. По умолчанию: 0.
-
requires_grad (булево, необязательно) – Если автоград должен записывать операции на возвращаемый тензор. По умолчанию:
False.
-
dtype (
Пример:
>>> import array >>> a = array.array('i', [1, 2, 3]) >>> t = torch.frombuffer(a, dtype=torch.int32) >>> t tensor([ 1, 2, 3]) >>> t[0] = -1 >>> a array([-1, 2, 3]) >>> # Interprets the signed char bytes as 32-bit integers. >>> # Each 4 signed char elements will be interpreted as >>> # 1 signed 32-bit integer. >>> import array >>> a = array.array('b', [-1, 0, 0, 0]) >>> torch.frombuffer(a, dtype=torch.int32) tensor([255], dtype=torch.int32)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.frombuffer.html