• 文档 >
  • torch >
  • torch.frombuffer
快捷键

torch.frombuffer

torch.frombuffer(buffer, *, dtype, count=-1, offset=0, requires_grad=False) → Tensor ¶

从实现 Python 缓冲区协议的对象创建一个 1 维 Tensor

跳过缓冲区中的前 offset 个字节,并将剩余的原始字节解释为具有 count 个元素的 1 维张量,类型为 dtype

注意以下两个条件中的任意一个必须成立:

1. count 是一个正的非零数,且缓冲区中的总字节数大于 offset 加上 count 乘以 dtype 的字节大小。

2. count 是负数,且缓冲区长度(字节数)减去 offset 后的结果能够被 dtype 的字节大小整除。

返回的张量和缓冲区共享相同的内存。对张量的修改将反映在缓冲区中,反之亦然。返回的张量不可调整大小。

注意

此函数增加拥有共享内存的对象的引用计数。因此,在返回的张量超出作用域之前,此类内存不会被释放。

警告

当传递一个实现缓冲区协议的对象给此函数,但其数据不在 CPU 上时,此函数的行为是未定义的。这样做很可能会导致段错误。

警告

此函数不尝试推断 dtype (因此,它不是可选的)。传递与源不同的 dtype 可能会导致意外行为。

参数:

缓冲区(对象)- 一个暴露缓冲区接口的 Python 对象。

关键字参数:
  • dtype( torch.dtype )- 返回张量的期望数据类型。

  • count(int,可选)- 要读取的期望元素数量。如果为负,则读取所有元素(直到缓冲区末尾)。默认:-1。

  • offset(int,可选)- 在缓冲区开始处跳过的字节数。默认:0。

  • requires_grad (bool,可选) – 如果 autograd 应记录对返回张量的操作。默认: False

示例:

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

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源