torch.from_file
- torch.from_file(filename, shared=None, size=0, *, dtype=None, layout=None, device=None, pin_memory=False)
-
创建一个基于内存映射文件存储的CPU张量。
如果
shared
为 True,那么内存将在进程间共享,并且所有更改都会被写入文件。如果shared
为 False,则张量的任何更改都不会影响文件。size
表示张量中的元素数量。如果shared
为False
,则文件必须至少包含size * sizeof(dtype)
字节的数据。如果shared
为True
,则在需要时会创建该文件。注意
只有CPU张量才能映射到文件。
注意
目前,由内存映射文件支持的张量不能在固定内存中创建。
- 参数
-
-
filename (str) – 需要映射的文件名称
-
shared (bool) – 是否共享内存(是否将
MAP_SHARED
或MAP_PRIVATE
传递给底层的 mmap(2) 调用) -
size (int) – 表示张量中元素的数量
-
- 关键字参数
-
-
dtype (
torch.dtype
, 可选) – 返回张量的所需数据类型。默认情况下,如果未指定,则使用全局默认值(参见torch.set_default_dtype()
)。 -
layout (
torch.layout
, 可选) - 指定返回张量的布局。默认值为torch.strided
。 -
device (
torch.device
, 可选) – 返回张量所需的设备。默认情况下,如果未指定None
,则使用当前的默认张量类型设备(参见torch.set_default_device()
)。对于 CPU 张量类型,默认为 CPU 设备;对于 CUDA 张量类型,则为当前的 CUDA 设备。 -
pin_memory (bool, 可选) – 如果启用,返回的张量将在固定内存中分配。仅适用于 CPU 张量。默认值:
False
。
-
- 示例:
-
>>> t = torch.randn(2, 5, dtype=torch.float64) >>> t.numpy().tofile('storage.pt') >>> t_mapped = torch.from_file('storage.pt', shared=False, size=10, dtype=torch.float64)