快捷方式

torch.Storage

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

类似于 torch.FloatStoragetorch.IntStorage 等的 torch.<type>Storagetorch.cuda.<type>Storage 类实际上从未被实例化。调用它们的构造函数会创建一个具有适当的 torch.dtypetorch.devicetorch.TypedStoragetorch.<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]
bfloat16()[source]

将此存储转换为 bfloat16 类型。

bool()[source]

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

byte()[source]

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

char()[source]

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

clone()[source]

返回此存储的副本。

complex_double()[source]

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

complex_float()[source]

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

copy_(source, non_blocking=None)[source]
cpu()[source]

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

cuda(device=None, non_blocking=False)[source]

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

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

参数
  • device (int) – 目标 GPU ID。默认为当前设备。

  • non_blocking (bool) – 如果为 True 且源在固定内存中,则复制操作将相对于主机异步执行。否则,此参数无效。

返回类型

T

data_ptr()[source]
property device
double()[source]

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

dtype: dtype
element_size()[source]
property filename: Optional[str]

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

fill_(value)[source]
float()[source]

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

float8_e4m3fn()[source]

将此存储转换为 float8_e4m3fn 类型

float8_e4m3fnuz()[source]

将此存储转换为 float8_e4m3fnuz 类型

float8_e5m2()[source]

将此存储转换为 float8_e5m2 类型

float8_e5m2fnuz()[source]

将此存储转换为 float8_e5m2fnuz 类型

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

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

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

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

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

  • shared (bool) – 是否共享内存(是否将 MAP_SHAREDMAP_PRIVATE 传递给底层的 mmap(2) 调用

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

get_device()[source]
返回类型

int

half()[source]

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

hpu(device=None, non_blocking=False)[source]

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

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

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

  • non_blocking (bool) – 如果为 True 且源在固定内存中,则复制操作将相对于主机异步执行。否则,此参数无效。

返回类型

T

int()[source]

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

property is_cuda
property is_hpu
is_pinned(device='cuda')[source]

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

参数

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

返回

一个布尔变量。

is_shared()[source]
is_sparse = False
long()[source]

将此存储转换为 long 类型。

nbytes()[source]
pickle_storage_type()[source]
pin_memory(device='cuda')[source]

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

参数

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

返回

一个固定的 CPU 存储。

resizable()[source]
resize_(size)[source]
share_memory_()[source]

参见 torch.UntypedStorage.share_memory_()

short()[source]

将此存储转换为 short 类型。

size()[source]
to(*, device, non_blocking=False)[source]

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

如果此对象已在正确的设备上,则不会执行复制,并返回原始对象。

参数
  • device (int) – 目标设备。

  • non_blocking (bool) – 如果为 True 且源在固定内存中,则复制操作将相对于主机异步执行。否则,此参数无效。

返回类型

T

tolist()[source]

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

type(dtype=None, non_blocking=False)[source]

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

如果此对象已为正确的类型,则不会执行复制,并返回原始对象。

参数
  • dtype (type or string) – 目标类型

  • non_blocking (bool) – 如果为 True,并且源位于固定内存中,目标位于 GPU 上,反之亦然,则复制将相对于主机异步执行。否则,该参数无效。

  • **kwargs** – 出于兼容性考虑,可能包含 async 键来代替 non_blocking 参数。 async 参数已弃用。

返回类型

Union[T, str]

untyped()[source]

返回内部 torch.UntypedStorage

class torch.UntypedStorage(*args, **kwargs)[source]
bfloat16()

将此存储转换为 bfloat16 类型。

bool()

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

byte()

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

byteswap(dtype)

交换底层数据中的字节。

char()

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

clone()

返回此存储的副本。

complex_double()

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

complex_float()

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

copy_()
cpu()

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

cuda(device=None, non_blocking=False)

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

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

参数
  • device (int) – 目标 GPU ID。默认为当前设备。

  • non_blocking (bool) – 如果为 True 且源在固定内存中,则复制操作将相对于主机异步执行。否则,此参数无效。

返回类型

T

data_ptr()
device: 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,则文件将在需要时创建。

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

  • shared (bool) –

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

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

get_device()
返回类型

int

half()

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

hpu(device=None, non_blocking=False)

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

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

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

  • non_blocking (bool) – 如果为 True 且源在固定内存中,则复制操作将相对于主机异步执行。否则,此参数无效。

返回类型

T

int()

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

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

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

参数

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

返回

一个布尔变量。

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

将此存储转换为 long 类型。

mps()

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

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

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

参数

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

返回

一个固定的 CPU 存储。

resizable()
resize_()
share_memory_(*args, **kwargs)[source]

将存储移到共享内存。

对于已在共享内存中的存储和 CUDA 存储,这将是一个空操作,因为不需要为了跨进程共享而移动它们。共享内存中的存储不可调整大小。

注意,为了缓解诸如 this 之类的 issue,从同一对象上的多个线程调用此函数是线程安全的。但是,对 self 调用任何其他函数而不进行适当的同步是不安全的。有关更多详细信息,请参阅 Multiprocessing best practices

注意

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

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

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

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

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

返回

self

short()

将此存储转换为 short 类型。

size()
返回类型

int

to(*, device, non_blocking=False)
返回类型

T

tolist()

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

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

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

如果此对象已为正确的类型,则不会执行复制,并返回原始对象。

参数
  • dtype (type or string) – 目标类型

  • non_blocking (bool) – 如果为 True,并且源位于固定内存中,目标位于 GPU 上,反之亦然,则复制将相对于主机异步执行。否则,该参数无效。

  • **kwargs** – 出于兼容性考虑,可能包含 async 键来代替 non_blocking 参数。 async 参数已弃用。

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

查找开发资源并获得问题的解答

查看资源