快捷方式

MemoryMappedTensor

class tensordict.MemoryMappedTensor(source, *, dtype=None, shape=None, index=None, device=None, handler=None, filename=None)

一个内存映射张量。

支持文件名或文件句柄。

MemoryMappedTensor 的主要优势在于其序列化方法,这些方法确保张量在没有复制的情况下通过队列或 RPC 远程调用传递。

注意

当在 RPC 设置中使用时,文件路径应可供两个节点访问。如果不可访问,则将 MemoryMappedTensor 从一个工作进程传递到另一个工作进程的行为是未定义的。

MemoryMappedTensor 支持多种构造方法。

示例

>>> # from an existing tensor
>>> tensor = torch.randn(3)
>>> with tempfile.NamedTemporaryFile() as file:
...     memmap_tensor = MemoryMappedTensor.from_tensor(tensor, filename=file.name)
...     assert memmap_tensor.filename is not None
>>> # if no filename is passed, a handler is used
>>> tensor = torch.randn(3)
>>> memmap_tensor = MemoryMappedTensor.from_tensor(tensor, filename=file.name)
>>> assert memmap_tensor.filename is None
>>> # one can create an empty tensor too
>>> with tempfile.NamedTemporaryFile() as file:
...     memmap_tensor_empty = MemoryMappedTensor.empty_like(tensor, filename=file.name)
>>> with tempfile.NamedTemporaryFile() as file:
...     memmap_tensor_zero = MemoryMappedTensor.zeros_like(tensor, filename=file.name)
>>> with tempfile.NamedTemporaryFile() as file:
...     memmap_tensor = MemoryMappedTensor.ones_like(tensor, filename=file.name)
chunk(chunks, dim=0) List of Tensors

参见 torch.chunk()

classmethod empty(*size, dtype=None, device=None, filename=None)
classmethod empty(shape, *, dtype=None, device=None, filename=None)

创建一个具有空内容、特定形状、dtype 和文件名的张量。

参数:

shape (整数torch.Size) – 张量的形状。

关键词参数:
  • dtype (torch.dtype) – 张量的数据类型。

  • device (torch.device) – 张量的设备。仅接受 None“cpu”,任何其他设备都将引发异常。

  • filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

  • existsok (bool, 可选) – 是否可以覆盖现有文件。默认为 False

classmethod empty_like(input, *, filename=None)

创建一个没有内容但具有与输入张量相同形状和 dtype 的张量。

参数:

input (torch.Tensor) – 用作示例的张量。

关键词参数:

filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

classmethod empty_nested(*args, **kwargs)

创建一个具有空内容、特定形状、dtype 和文件名的张量。

参数:

shape (nested_shape) – 张量的形状。

关键词参数:
  • dtype (torch.dtype) – 张量的数据类型。

  • device (torch.device) – 张量的设备。仅接受 None“cpu”,任何其他设备都将引发异常。

  • filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

  • existsok (bool, 可选) – 是否可以覆盖现有文件。默认为 False

property filename

张量的文件名(如果有)。

否则会引发异常。

classmethod from_filename(filename, dtype, shape, index=None)

从给定文件名加载 MemoryMappedTensor。

参数:
  • filename (路径等效路径) – 文件的路径。

  • dtype (torch.dtype) – 张量的数据类型。

  • shape (torch.Sizetorch.Tensor) – 张量的形状。如果提供了张量,则假定该张量是 nested_tensor 实例。

  • index (torch 兼容的索引类型) – 用于构建张量的索引。

classmethod from_handler(handler, dtype, shape, index=None)

从给定句柄加载 MemoryMappedTensor。

参数:
  • handler (兼容的文件句柄) – 张量的句柄。

  • dtype (torch.dtype) – 张量的数据类型。

  • shape (torch.Sizetorch.Tensor) – 张量的形状。如果提供了张量,则假定该张量是 nested_tensor 实例。

  • index (torch 兼容的索引类型, 可选) – 用于构建张量的索引。

classmethod from_tensor(input, *, filename: Optional[Union[Path, str]] = None, existsok: bool = False, copy_existing: bool = False, copy_data: bool = True, shape: Optional[Size] = None)

创建一个与另一个张量内容相同的 MemoryMappedTensor。

如果张量已经是 MemoryMappedTensor,并且 filename 参数为 None 或两个路径匹配,则返回原始张量。在所有其他情况下,都会生成一个新的 MemoryMappedTensor

参数:

input (torch.Tensor) – 内容必须复制到 MemoryMappedTensor 上的张量。

关键词参数:
  • filename (文件路径) – 应存储张量的文件路径。如果未提供,则使用文件句柄代替。

  • existsok (bool, 可选) – 如果为 True,文件将覆盖现有文件。默认为 False

  • copy_existing (bool, 可选) – 如果为 True 并且提供的输入是具有关联文件名的 MemoryMappedTensor,则允许将内容复制到新位置。否则,将抛出异常。此行为的存在是为了防止意外地在磁盘上复制数据。

  • copy_data (bool, 可选) – 如果为 True,张量的内容将被复制到存储中。默认为 True

  • shape (torch.Sizetorch.Tensor) – 用于覆盖张量形状的形状。如果传递了张量,则它必须表示嵌套张量的嵌套形状。

classmethod full(*size, fill_value, dtype=None, device=None, filename=None)
classmethod full(shape, *, fill_value, dtype=None, device=None, filename=None)

创建一个具有由 fill_value 指定的单一内容、特定形状、dtype 和文件名的张量。

参数:

shape (整数torch.Size) – 张量的形状。

关键词参数:
  • fill_value (float等效值) – 张量的内容。

  • dtype (torch.dtype) – 张量的数据类型。

  • device (torch.device) – 张量的设备。仅接受 None“cpu”,任何其他设备都将引发异常。

  • filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

  • existsok (bool, 可选) – 是否可以覆盖现有文件。默认为 False

classmethod full_like(input, fill_value, *, filename=None)

创建一个具有由 fill_value 参数指示的单一内容,但形状和 dtype 与输入张量相同的张量。

参数:
  • input (torch.Tensor) – 用作示例的张量。

  • fill_value (float等效值) – 张量的内容。

关键词参数:

filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

classmethod ones(*size, dtype=None, device=None, filename=None)
classmethod ones(shape, *, dtype=None, device=None, filename=None)

创建一个具有 1 填充内容、特定形状、dtype 和文件名的张量。

参数:

shape (整数torch.Size) – 张量的形状。

关键词参数:
  • dtype (torch.dtype) – 张量的数据类型。

  • device (torch.device) – 张量的设备。仅接受 None“cpu”,任何其他设备都将引发异常。

  • filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

  • existsok (bool, 可选) – 是否可以覆盖现有文件。默认为 False

classmethod ones_like(input, *, filename=None)

创建一个具有 1 填充内容,但形状和 dtype 与输入张量相同的张量。

参数:

input (torch.Tensor) – 用作示例的张量。

关键词参数:

filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

unbind(dim=0) seq

参见 torch.unbind()

classmethod zeros(*size, dtype=None, device=None, filename=None)
classmethod zeros(shape, *, dtype=None, device=None, filename=None)

创建一个具有 0 填充内容、特定形状、dtype 和文件名的张量。

参数:

shape (整数torch.Size) – 张量的形状。

关键词参数:
  • dtype (torch.dtype) – 张量的数据类型。

  • device (torch.device) – 张量的设备。仅接受 None“cpu”,任何其他设备都将引发异常。

  • filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

  • existsok (bool, 可选) – 是否可以覆盖现有文件。默认为 False

classmethod zeros_like(input, *, filename=None)

创建一个具有 0 填充内容,但形状和 dtype 与输入张量相同的张量。

参数:

input (torch.Tensor) – 用作示例的张量。

关键词参数:

filename (路径等效路径) – 文件的路径(如果有)。如果未提供,则使用句柄。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得解答

查看资源