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
, optional) – 返回张量的期望数据类型。默认值:如果None
,则使用全局默认值(参见torch.set_default_dtype()
)。layout (
torch.layout
, 可选) – 返回张量的所需布局。默认:torch.strided
。device (
torch.device
, 可选) – 返回张量的所需设备。默认:如果为None
,则使用当前设备作为默认张量类型(参见torch.set_default_device()
)。对于 CPU 张量类型,device
将是 CPU;对于 CUDA 张量类型,device
将是当前的 CUDA 设备。pin_memory (bool, optional) – 如果设置为 True,则返回的张量将被分配到固定内存中。仅适用于 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)