Shortcuts

torch.存储

torch.Storage 是与默认数据类型对应的存储类的别名(torch.get_default_dtype())。例如,如果默认数据类型是 torch.floattorch.Storage 解析为 torch.FloatStorage

torch.Storagetorch.cuda.Storage 类, 如 torch.FloatStoragetorch.IntStorage 等,实际上从未被实例化。调用它们的构造函数会创建 一个具有适当 torch.dtypetorch.devicetorch.TypedStoragetorch.Storage 类具有与 torch.TypedStorage 相同的所有类方法。

一个 torch.TypedStorage 是一个连续的、一维的元素数组,元素类型为特定的 torch.dtype。它可以被赋予任何 torch.dtype,并且内部数据将被适当地解释。torch.TypedStorage 包含一个 torch.UntypedStorage,它以无类型的字节数组形式保存数据。

每个strided torch.Tensor 包含一个 torch.TypedStorage, 它存储了 torch.Tensor 视图的所有数据。

警告

除了torch.UntypedStorage之外的所有存储类将在未来被移除,并且torch.UntypedStorage将在所有情况下使用。

class torch.TypedStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
bfloat16()[源代码]

将此存储转换为bfloat16类型。

bool()[源代码]

将此存储转换为布尔类型。

byte()[源代码]

将此存储转换为字节类型。

char()[源代码]

将此存储转换为字符类型。

clone()[源代码]

返回此存储的副本。

complex_double()[源代码]

将此存储转换为复数双精度类型。

complex_float()[源代码]

将此存储转换为复数浮点类型。

copy_(source, non_blocking=None)[源代码]
cpu()[源代码]

如果此存储不在CPU上,则返回其CPU副本。

cuda(device=None, non_blocking=False, **kwargs)[源代码]

返回此对象在CUDA内存中的副本。

如果此对象已经位于CUDA内存中并且位于正确的设备上,则不会执行复制操作,并返回原始对象。

Parameters
  • 设备 (int) – 目标 GPU 的 ID。默认为当前设备。

  • non_blocking (bool) – 如果True且源数据在固定内存中, 复制操作将与主机异步进行。否则, 该参数无效。

  • **kwargs – 为了兼容性,可能包含键 async 以替代 non_blocking 参数。

Return type

T

data_ptr()[源代码]
property device
double()[源代码]

将此存储转换为双精度类型。

dtype: 数据类型
element_size()[源代码]
property filename: Optional[str]

如果此存储是从文件内存映射的,则返回与此存储关联的文件名,否则返回 None(如果存储不是通过内存映射文件创建的)。

fill_(value)[源代码]
float()[源代码]

将此存储转换为浮点类型。

float8_e4m3fn()[源代码]

将此存储转换为 float8_e4m3fn 类型

float8_e4m3fnuz()[源代码]

将此存储转换为 float8_e4m3fnuz 类型

float8_e5m2()[源代码]

将此存储转换为 float8_e5m2 类型

float8_e5m2fnuz()[源代码]

将此存储转换为 float8_e5m2fnuz 类型

classmethod from_buffer(*args, **kwargs)[源代码]
classmethod from_file(filename, shared=False, size=0) Storage[源代码]

创建一个由内存映射文件支持的CPU存储。

如果 sharedTrue,则所有进程之间共享内存。 所有更改都会写入文件。如果 sharedFalse,则存储上的更改不会影响文件。

size 是存储中的元素数量。如果 sharedFalse, 那么文件必须至少包含 size * sizeof(Type) 字节 (Type 是存储的类型)。如果 sharedTrue,则如果需要,将创建文件。

Parameters
  • filename (str) – 要映射的文件名

  • 共享 (布尔值) – 是否共享内存(是否传递 MAP_SHAREDMAP_PRIVATE 到底层的 mmap(2) 调用

  • 大小 (int) – 存储中的元素数量

get_device()[源代码]
Return type

int

half()[源代码]

将此存储转换为半精度类型。

hpu(device=None, non_blocking=False, **kwargs)[源代码]

返回此对象在HPU内存中的副本。

如果此对象已经在HPU内存中并且位于正确的设备上,则不会执行复制操作,并返回原始对象。

Parameters
  • 设备 (int) – 目标 HPU ID。默认为当前设备。

  • non_blocking (bool) – 如果True且源数据在固定内存中,复制操作将与主机异步进行。否则,该参数无效。

  • **kwargs – 为了兼容性,可能包含键 async 以替代 non_blocking 参数。

Return type

T

int()[源代码]

将此存储转换为整数类型。

property is_cuda
property is_hpu
is_pinned(device='cuda')[源代码]

确定 CPU TypedStorage 是否已在设备上固定。

Parameters

设备 (字符串torch.device) – 要固定内存的设备。默认值:'cuda'

Returns

一个布尔变量。

is_shared()[源代码]
is_sparse = False
long()[源代码]

将此存储转换为长整型。

nbytes()[源代码]
pickle_storage_type()[源代码]
pin_memory(device='cuda')[源代码]

如果尚未固定,请将 CPU TypedStorage 复制到固定内存。

Parameters

设备 (字符串torch.device) – 要固定内存的设备。默认值:'cuda'

Returns

一个固定的CPU存储。

resizable()[源代码]
resize_(size)[源代码]
share_memory_()[源代码]

参见 torch.UntypedStorage.share_memory_()

short()[源代码]

将此存储转换为短类型。

size()[源代码]
tolist()[源代码]

返回一个包含此存储中元素的列表。

type(dtype=None, non_blocking=False)[源代码]

如果未提供dtype,则返回类型,否则将此对象转换为指定的类型。

如果这已经是正确的类型,则不会进行复制,并返回原始对象。

Parameters
  • dtype (type字符串) – 所需类型

  • non_blocking (bool) – 如果True,并且源在固定内存中,而目标在GPU上,或者反之,则复制操作会相对于主机异步执行。否则,该参数无效。

  • **kwargs – 为了兼容性,可能包含键 async 来代替 non_blocking 参数。async 参数已被弃用。

Return type

联合[T, 字符串]

untyped()[源代码]

返回内部的 torch.UntypedStorage

class torch.UntypedStorage(*args, **kwargs)[源代码]
bfloat16()

将此存储转换为bfloat16类型。

bool()

将此存储转换为布尔类型。

byte()

将此存储转换为字节类型。

byteswap(dtype)

在底层数据中交换字节。

char()

将此存储转换为字符类型。

clone()

返回此存储的副本。

complex_double()

将此存储转换为复数双精度类型。

complex_float()

将此存储转换为复数浮点类型。

copy_()
cpu()

如果此存储不在CPU上,则返回其CPU副本。

cuda(device=None, non_blocking=False, **kwargs)

返回此对象在CUDA内存中的副本。

如果此对象已经位于CUDA内存中并且位于正确的设备上,则不会执行复制操作,并返回原始对象。

Parameters
  • 设备 (int) – 目标 GPU 的 ID。默认为当前设备。

  • non_blocking (bool) – 如果True且源数据在固定内存中,复制操作将与主机异步进行。否则,该参数无效。

  • **kwargs – 为了兼容性,可能包含键 async 以替代 non_blocking 参数。

data_ptr()
device: 设备
double()

将此存储转换为双精度类型。

element_size()
property filename: Optional[str]

如果此存储是从文件内存映射的,则返回与此存储关联的文件名,否则返回 None(如果存储不是通过内存映射文件创建的)。

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存储。

如果 sharedTrue,则所有进程之间共享内存。 所有更改都会写入文件。如果 sharedFalse,则存储上的更改不会影响文件。

size 是存储中的元素数量。如果 sharedFalse, 那么文件必须至少包含 size * sizeof(Type) 字节 (Type 是存储的类型,在 UnTypedStorage 的情况下,文件必须至少包含 size 字节)。如果 sharedTrue,则如果需要,将创建文件。

Parameters
  • filename (str) – 要映射的文件名

  • 共享 (布尔值) –

    是否共享内存(是否传递 MAP_SHAREDMAP_PRIVATE 到底层的 mmap(2) 调用

  • 大小 (int) – 存储中的元素数量

get_device()
Return type

int

half()

将此存储转换为半精度类型。

hpu(device=None, non_blocking=False, **kwargs)

返回此对象在HPU内存中的副本。

如果此对象已经在HPU内存中并且位于正确的设备上,则不会执行复制操作,并返回原始对象。

Parameters
  • 设备 (int) – 目标 HPU ID。默认为当前设备。

  • non_blocking (bool) – 如果True且源数据在固定内存中,复制操作将与主机异步进行。否则,该参数无效。

  • **kwargs – 为了兼容性,可能包含键 async 以替代 non_blocking 参数。

int()

将此存储转换为整数类型。

property is_cuda
property is_hpu
is_pinned(device='cuda')

确定CPU存储是否已在设备上固定。

Parameters

设备 (字符串torch.device) – 要固定内存的设备。默认值:'cuda'

Returns

一个布尔变量。

is_shared()
is_sparse: bool = False
is_sparse_csr: bool = False
long()

将此存储转换为长整型。

mps()

如果尚未在MPS上,则返回此存储的MPS副本。

nbytes()
new()
pin_memory(device='cuda')

如果尚未固定,请将CPU存储复制到固定内存。

Parameters

设备 (字符串torch.device) – 要固定内存的设备。默认值:'cuda'

Returns

一个固定的CPU存储。

resizable()
resize_()
share_memory_(*args, **kwargs)[源代码]

将存储移动到共享内存中。

对于已经位于共享内存中的存储以及不需要为跨进程共享而移动的CUDA存储,这是一个空操作。共享内存中的存储无法调整大小。

请注意,为了缓解类似此问题,从多个线程在同一对象上调用此函数是线程安全的。 然而,在没有适当同步的情况下,调用self上的任何其他函数都不是线程安全的。请参阅多进程最佳实践了解更多详情。

注意

当共享内存中的所有存储引用都被删除时,关联的共享内存对象也会被删除。PyTorch有一个特殊的清理过程,以确保即使当前进程意外退出,这种情况也会发生。

值得注意的是share_memory_()from_file()shared = True时的区别

  1. share_memory_ 使用 shm_open(3) 创建一个 POSIX 共享内存对象,而 from_file() 使用 open(2) 打开用户传递的文件名。

  2. 两者都使用带有MAP_SHAREDmmap(2)调用将文件/对象映射到当前虚拟地址空间

  3. share_memory_ 将在映射对象后调用 shm_unlink(3),以确保当没有进程打开该对象时,共享内存对象被释放。torch.from_file(shared=True) 不会取消链接文件。该文件是持久的,并将一直存在,直到用户删除它。

Returns

self

short()

将此存储转换为短类型。

size()
Return type

int

tolist()

返回一个包含此存储中元素的列表。

type(dtype=None, non_blocking=False, **kwargs)

如果未提供dtype,则返回类型,否则将此对象转换为指定的类型。

如果这已经是正确的类型,则不会进行复制,并返回原始对象。

Parameters
  • dtype (type字符串) – 所需类型

  • non_blocking (bool) – 如果True,并且源在固定内存中,而目标在GPU上,或者反之,则复制操作会相对于主机异步执行。否则,该参数无效。

  • **kwargs – 为了兼容性,可能包含键 async 来代替 non_blocking 参数。async 参数已被弃用。

untyped()
class torch.DoubleStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.float64[源代码]
class torch.FloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.float32[源代码]
class torch.HalfStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.float16[源代码]
class torch.LongStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.int64[源代码]
class torch.IntStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.int32[源代码]
class torch.ShortStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.int16[源代码]
class torch.CharStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.int8[源代码]
class torch.ByteStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.uint8[源代码]
class torch.BoolStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.bool[源代码]
class torch.BFloat16Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.bfloat16[源代码]
class torch.ComplexDoubleStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.complex128[源代码]
class torch.ComplexFloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.complex64[源代码]
class torch.QUInt8Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.quint8[源代码]
class torch.QInt8Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.qint8[源代码]
class torch.QInt32Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.qint32[源代码]
class torch.QUInt4x2Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.quint4x2[源代码]
class torch.QUInt2x4Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[源代码]
dtype: 数据类型 = torch.quint2x4[源代码]
优云智算