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 (логическое значение, необязательно) – Если autograd должен записывать операции над возвращаемым тензором. По умолчанию:
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/1.13/generated/torch.frombuffer.html