torch.Storage¶
torch.Storage 是与默认数据类型 (torch.get_default_dtype()) 对应的存储类的别名。例如,如果默认数据类型是 torch.float,则 torch.Storage 解析为 torch.FloatStorage。
类如 torch.<type>Storage 和 torch.cuda.<type>Storage,例如 torch.FloatStorage,torch.IntStorage 等,实际上从未被实例化。调用它们的构造函数会创建一个 torch.TypedStorage,并使用相应的 torch.dtype 和 torch.device。 torch.<type>Storage 类拥有与 torch.TypedStorage 相同的所有类方法。
一个 torch.TypedStorage 是一个连续的、一维的元素数组,这些元素具有特定的 torch.dtype。它可以被赋予任何 torch.dtype,内部数据将被相应地解释。 torch.TypedStorage 包含一个 torch.UntypedStorage,它将数据存储为未类型化的字节数组。
每个带步长的 torch.Tensor 包含一个 torch.TypedStorage,它存储了 torch.Tensor 视图的所有数据。
警告
除了 torch.UntypedStorage 之外的所有存储类将在未来被移除,并且 torch.UntypedStorage 将在所有情况下使用。
- class torch.TypedStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- cuda(device=None, non_blocking=False, **kwargs)[source]¶
- 返回此对象在 CUDA 内存中的副本。 - 如果此对象已在 CUDA 内存中且位于正确的设备上,则不会执行任何复制操作,并返回原始对象。 
 - property device¶
 - classmethod from_file(filename, shared=False, size=0) Storage[source]¶
- 创建一个由内存映射文件支持的 CPU 存储。 - 如果 - shared为- True,则所有进程共享内存。所有更改都将写入文件。如果- shared为- False,则存储上的更改不会影响文件。- size是存储中的元素数量。如果- shared为- False,则文件必须包含至少- size * sizeof(Type)字节(- Type是存储的类型)。如果- shared为- True,则文件将在需要时创建。- 参数
- filename (str) – 要映射的文件名 
- shared (bool) – 是否共享内存(是否将 - MAP_SHARED或- MAP_PRIVATE传递给底层的 mmap(2) 调用)
- size (int) – 存储中的元素数量 
 
 
 - hpu(device=None, non_blocking=False, **kwargs)[source]¶
- 返回此对象在 HPU 内存中的副本。 - 如果此对象已在 HPU 内存中且位于正确的设备上,则不会执行复制操作,并返回原始对象。 
 - property is_cuda¶
 - property is_hpu¶
 - is_pinned(device='cuda')[source]¶
- 确定 CPU TypedStorage 是否已在设备上固定。 - 参数
- 设备 (str 或 torch.device) – 要将内存固定到的设备。默认值: - 'cuda'
- 返回值
- 一个布尔变量。 
 
 - is_sparse = False¶
 - pin_memory(device='cuda')[source]¶
- 如果 CPU TypedStorage 尚未固定,则将其复制到固定内存中。 - 参数
- 设备 (str 或 torch.device) – 要将内存固定到的设备。默认值: - 'cuda'。
- 返回值
- 一个固定的 CPU 存储。 
 
 - type(dtype=None, non_blocking=False)[source]¶
- 如果未提供 dtype,则返回类型,否则将此对象转换为指定类型。 - 如果此对象已经是正确的类型,则不执行复制,并返回原始对象。 
 - untyped()[source]¶
- 返回内部的 - torch.UntypedStorage。
 
- class torch.UntypedStorage(*args, **kwargs)[source]¶
- bfloat16()¶
- 将此存储转换为 bfloat16 类型。 
 - bool()¶
- 将此存储转换为 bool 类型。 
 - byte()¶
- 将此存储转换为 byte 类型。 
 - byteswap(dtype)¶
- 交换底层数据中的字节。 
 - char()¶
- 将此存储转换为字符类型。 
 - clone()¶
- 返回此存储的副本。 
 - complex_double()¶
- 将此存储转换为复数双精度类型。 
 - complex_float()¶
- 将此存储转换为复数单精度类型。 
 - copy_()¶
 - cpu()¶
- 如果此存储不在 CPU 上,则返回其 CPU 副本。 
 - cuda(device=None, non_blocking=False, **kwargs)¶
- 返回此对象在 CUDA 内存中的副本。 - 如果此对象已在 CUDA 内存中且位于正确的设备上,则不会执行任何复制操作,并返回原始对象。 
 - data_ptr()¶
 - double()¶
- 将此存储转换为双精度类型。 
 - element_size()¶
 - fill_()¶
 - float()¶
- 将此存储转换为浮点类型。 
 - float8_e4m3fn()¶
- 将此存储转换为 float8_e4m3fn 类型 
 - float8_e4m3fnuz()¶
- 将此存储转换为 float8_e4m3fnuz 类型 
 - float8_e5m2()¶
- 将此存储转换为 float8_e5m2 类型 
 - float8_e5m2fnuz()¶
- 将此存储转换为 float8_e5m2fnuz 类型 
 - static from_buffer()¶
 - static from_file(filename, shared=False, size=0) Storage¶
- 创建一个由内存映射文件支持的 CPU 存储。 - 如果 - shared为- True,则所有进程共享内存。所有更改都将写入文件。如果- shared为- False,则存储上的更改不会影响文件。- size是存储中的元素数量。如果- shared为- False,则文件必须至少包含- size * sizeof(Type)字节(- Type是存储的类型,对于- UnTypedStorage,文件必须至少包含- size字节)。如果- shared为- True,则文件将在需要时创建。- 参数
- filename (str) – 要映射的文件名 
- shared (布尔值) – - 是否共享内存(是否将 - MAP_SHARED或- MAP_PRIVATE传递给底层的 mmap(2) 调用)
- size (int) – 存储中的元素数量 
 
 
 - half()¶
- 将此存储转换为半精度类型。 
 - hpu(device=None, non_blocking=False, **kwargs)¶
- 返回此对象在 HPU 内存中的副本。 - 如果此对象已在 HPU 内存中且位于正确的设备上,则不会执行复制操作,并返回原始对象。 
 - int()¶
- 将此存储转换为整数类型。 
 - property is_cuda¶
 - property is_hpu¶
 - is_pinned(device='cuda')¶
- 确定 CPU 存储器是否已固定在设备上。 - 参数
- 设备 (str 或 torch.device) – 要将内存固定到的设备。默认值: - 'cuda'。
- 返回值
- 一个布尔变量。 
 
 - long()¶
- 将此存储转换为长类型。 
 - mps()¶
- 如果存储尚未在 MPS 上,则返回此存储的 MPS 副本。 
 - nbytes()¶
 - new()¶
 - pin_memory(device='cuda')¶
- 如果 CPU 存储尚未固定,则将其复制到固定内存。 - 参数
- 设备 (str 或 torch.device) – 要将内存固定到的设备。默认值: - 'cuda'。
- 返回值
- 一个固定的 CPU 存储。 
 
 - resizable()¶
 - resize_()¶
 - 将存储移动到共享内存。 - 对于已经位于共享内存中的存储和 CUDA 存储,这是一个无操作,因为它们不需要为了跨进程共享而移动。位于共享内存中的存储不能调整大小。 - 注意,为了缓解诸如 this 之类的問題,从同一个对象上的多个线程调用此函数是线程安全的。但是,在没有适当同步的情况下,从同一个对象上调用任何其他函数是不安全的。有关更多详细信息,请参阅 多进程最佳实践。 - 注意 - 当对共享内存中存储的所有引用都被删除时,关联的共享内存对象也将被删除。PyTorch 具有一个特殊的清理过程,以确保即使当前进程意外退出,也会发生这种情况。 - 值得注意的是 - share_memory_()和- from_file()之间的区别,其中- shared = True- share_memory_使用 shm_open(3) 创建一个 POSIX 共享内存对象,而- from_file()使用 open(2) 打开用户传递的文件名。
- 两者都使用 mmap(2) 调用,其中 - MAP_SHARED将文件/对象映射到当前虚拟地址空间
- share_memory_将在将对象映射后调用- shm_unlink(3),以确保在没有进程打开对象时释放共享内存对象。- torch.from_file(shared=True)不会解除文件链接。此文件是持久性的,将保留,直到用户将其删除。
 - 返回值
- 自身
 
 - short()¶
- 将此存储转换为短整型。 
 - tolist()¶
- 返回一个包含此存储元素的列表。 
 - type(dtype=None, non_blocking=False, **kwargs)¶
- 如果未提供 dtype,则返回类型,否则将此对象转换为指定类型。 - 如果此对象已经是正确的类型,则不执行复制,并返回原始对象。 
 - untyped()¶
 
- class torch.DoubleStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.FloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.HalfStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.LongStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.ShortStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.CharStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.ByteStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.BoolStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.BFloat16Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.ComplexDoubleStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.ComplexFloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.QUInt8Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.QInt8Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶
- class torch.QInt32Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[source]¶