捷徑

torch.Storage

torch.Storage 是與預設資料類型 (torch.get_default_dtype()) 相符的儲存體類別的別名。例如,如果預設資料類型是 torch.float,則 torch.Storage 會解析為 torch.FloatStorage

torch.<type>Storagetorch.cuda.<type>Storage 類別(如 torch.FloatStoragetorch.IntStorage 等)實際上從未被實例化。呼叫其建構函式會建立具有適當 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)[原始碼]
bfloat16()[原始碼]

將此儲存體轉換為 bfloat16 類型。

bool()[原始碼]

將此儲存體轉換為布林值類型。

byte()[原始碼]

將此儲存體轉換為位元組類型。

char()[原始碼]

將此儲存體轉換為 char 類型。

clone()[原始碼]

傳回此儲存體的副本。

complex_double()[原始碼]

將此儲存體轉換為複數雙精度浮點數類型。

complex_float()[原始碼]

將此儲存體轉換為複數單精度浮點數類型。

copy_(source, non_blocking=None)[原始碼]
cpu()[原始碼]

如果此儲存體尚未位於 CPU 上,則傳回其 CPU 副本。

cuda(device=None, non_blocking=False)[原始碼]

傳回此物件在 CUDA 記憶體中的副本。

如果此物件已位於 CUDA 記憶體中且位於正確的裝置上,則不會執行複製,並傳回原始物件。

參數
  • device (int) – 目標 GPU ID。預設為目前的裝置。

  • non_blocking (bool) – 如果為 True 且來源位於固定記憶體中,則複製將與主機非同步。否則,此參數無效。

回傳型別

T

data_ptr()[原始碼]
property device
double()[原始碼]

將此儲存體轉換為雙精度浮點數類型。

dtype: 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,則會在需要時建立檔案。

參數
  • 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()[原始碼]

將此儲存體轉換為 int 類型。

property is_cuda
property is_hpu
is_pinned(device='cuda')[原始碼]

判斷 CPU TypedStorage 是否已經固定在裝置上。

參數

device (strtorch.device) – 要將記憶體固定在其上的裝置。 預設值:'cuda'

回傳

一個布林變數。

is_shared()[原始碼]
is_sparse = False
long()[原始碼]

將此儲存體轉換為 long 類型。

nbytes()[原始碼]
pickle_storage_type()[原始碼]
pin_memory(device='cuda')[原始碼]

如果 CPU TypedStorage 尚未固定,則將其複製到固定記憶體。

參數

device (strtorch.device) – 要將記憶體固定在其上的裝置。 預設值:'cuda'

回傳

一個固定的 CPU 儲存體。

resizable()[原始碼]
resize_(size)[原始碼]
share_memory_()[原始碼]

請參閱 torch.UntypedStorage.share_memory_()

short()[原始碼]

將此儲存體轉換為 short 類型。

size()[原始碼]
to(*, device, non_blocking=False)[原始碼]

在裝置記憶體中回傳此物件的副本。

如果此物件已經在正確的裝置上,則不會執行任何複製,並且會回傳原始物件。

參數
  • device (int) – 目標裝置。

  • non_blocking (bool) – 如果為 True 且來源位於固定記憶體中,則複製將與主機非同步。否則,此參數無效。

回傳型別

T

tolist()[原始碼]

回傳一個包含此儲存體元素的清單。

type(dtype=None, non_blocking=False)[原始碼]

如果未提供 dtype,則回傳類型,否則將此物件轉換為指定的類型。

如果這已經是正確的類型,則不會執行任何複製,並且會回傳原始物件。

參數
  • dtype (typestring) – 所需的類型

  • non_blocking (bool) – 如果為 True,並且來源位於固定記憶體中,而目的地位於 GPU 上,反之亦然,則會針對主機非同步執行複製。 否則,此參數沒有任何作用。

  • **kwargs – 為了相容性,可能會包含鍵 async 來取代 non_blocking 參數。 async 參數已棄用。

回傳型別

Union[T, str]

untyped()[原始碼]

回傳內部 torch.UntypedStorage

class torch.UntypedStorage(*args, **kwargs)[原始碼]
bfloat16()

將此儲存體轉換為 bfloat16 類型。

bool()

將此儲存體轉換為布林值類型。

byte()

將此儲存體轉換為位元組類型。

byteswap(dtype)

交換基礎資料中的位元組。

char()

將此儲存體轉換為 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()

將此儲存體轉換為 int 類型。

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

判斷 CPU 儲存體是否已固定在裝置上。

參數

device (strtorch.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 (strtorch.device) – 要將記憶體固定在其上的裝置。 預設值:'cuda'

回傳

一個固定的 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) 不會取消連結檔案。此檔案是永久性的,並且會一直保留到使用者將其刪除為止。

回傳

self

short()

將此儲存體轉換為 short 類型。

size()
回傳型別

int

to(*, device, non_blocking=False)
回傳型別

T

tolist()

回傳一個包含此儲存體元素的清單。

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

如果未提供 dtype,則回傳類型,否則將此物件轉換為指定的類型。

如果這已經是正確的類型,則不會執行任何複製,並且會回傳原始物件。

參數
  • dtype (typestring) – 所需的類型

  • 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: dtype = torch.float64[原始碼]
class torch.FloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.float32[原始碼]
class torch.HalfStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.float16[原始碼]
class torch.LongStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.int64[原始碼]
class torch.IntStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.int32[原始碼]
class torch.ShortStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.int16[原始碼]
class torch.CharStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.int8[原始碼]
class torch.ByteStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.uint8[原始碼]
class torch.BoolStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.bool[原始碼]
class torch.BFloat16Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.bfloat16[原始碼]
class torch.ComplexDoubleStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.complex128[原始碼]
class torch.ComplexFloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.complex64[原始碼]
class torch.QUInt8Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.quint8[原始碼]
class torch.QInt8Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.qint8[原始碼]
class torch.QInt32Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.qint32[原始碼]
class torch.QUInt4x2Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.quint4x2[原始碼]
class torch.QUInt2x4Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]
dtype: dtype = torch.quint2x4[原始碼]

文件

取得 PyTorch 全面的開發者文件

查看文件

教學課程

取得適用於初學者和進階開發者的深入教學課程

查看教學課程

資源

尋找開發資源並取得問題解答

查看資源