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.dtype 和 torch.device 的 torch.TypedStorage。 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)[原始碼]¶
- cuda(device=None, non_blocking=False)[原始碼]¶
- 傳回此物件在 CUDA 記憶體中的副本。 - 如果此物件已位於 CUDA 記憶體中且位於正確的裝置上,則不會執行複製,並傳回原始物件。 
 - property device¶
 - classmethod from_file(filename, shared=False, size=0) Storage[原始碼]¶
- 建立一個由記憶體映射檔案支援的 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)[原始碼]¶
- 傳回此物件在 HPU 記憶體中的副本。 - 如果此物件已位於 HPU 記憶體中且位於正確的裝置上,則不會執行複製,並傳回原始物件。 
 - property is_cuda¶
 - property is_hpu¶
 - is_pinned(device='cuda')[原始碼]¶
- 判斷 CPU TypedStorage 是否已經固定在裝置上。 - 參數
- device (str 或 torch.device) – 要將記憶體固定在其上的裝置。 預設值: - 'cuda'
- 回傳
- 一個布林變數。 
 
 - is_sparse = False¶
 - pin_memory(device='cuda')[原始碼]¶
- 如果 CPU TypedStorage 尚未固定,則將其複製到固定記憶體。 - 參數
- device (str 或 torch.device) – 要將記憶體固定在其上的裝置。 預設值: - 'cuda'。
- 回傳
- 一個固定的 CPU 儲存體。 
 
 - type(dtype=None, non_blocking=False)[原始碼]¶
- 如果未提供 dtype,則回傳類型,否則將此物件轉換為指定的類型。 - 如果這已經是正確的類型,則不會執行任何複製,並且會回傳原始物件。 
 - 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 記憶體中且位於正確的裝置上,則不會執行複製,並傳回原始物件。 
 - 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 (bool) – - 是否共享記憶體(是否將 - MAP_SHARED或- MAP_PRIVATE傳遞給底層的 mmap(2) 呼叫)
- size (int) – 儲存體中的元素數量 
 
 
 - half()¶
- 將此儲存體轉換為半精度浮點數類型。 
 - hpu(device=None, non_blocking=False)¶
- 傳回此物件在 HPU 記憶體中的副本。 - 如果此物件已位於 HPU 記憶體中且位於正確的裝置上,則不會執行複製,並傳回原始物件。 
 - int()¶
- 將此儲存體轉換為 int 類型。 
 - property is_cuda¶
 - property is_hpu¶
 - is_pinned(device='cuda')¶
- 判斷 CPU 儲存體是否已固定在裝置上。 - 參數
- device (str 或 torch.device) – 要將記憶體固定在其上的裝置。 預設值: - 'cuda'。
- 回傳
- 一個布林變數。 
 
 - long()¶
- 將此儲存體轉換為 long 類型。 
 - mps()¶
- 如果此儲存體尚未在 MPS 上,則傳回此儲存體的 MPS 副本。 
 - nbytes()¶
 - new()¶
 - pin_memory(device='cuda')¶
- 如果 CPU 儲存體尚未固定,則將其複製到固定記憶體。 - 參數
- device (str 或 torch.device) – 要將記憶體固定在其上的裝置。 預設值: - 'cuda'。
- 回傳
- 一個固定的 CPU 儲存體。 
 
 - resizable()¶
 - resize_()¶
 - 將儲存體移至共享記憶體。 - 對於已在共享記憶體中的儲存體和 CUDA 儲存體(不需要移動即可在進程之間共享),這是一個無效操作。共享記憶體中的儲存體無法調整大小。 - 請注意,為了減輕像 這樣 的問題,從同一個物件上的多個執行緒呼叫此函式是執行緒安全的。但是,在沒有適當同步的情況下,從 self 呼叫任何其他函式都不是執行緒安全的。如需更多詳細資訊,請參閱 多程序最佳實務。 - 注意 - 當刪除對共享記憶體中儲存體的所有引用時,也會刪除關聯的共享記憶體物件。PyTorch 有一個特殊的清理程序,即使當前進程意外退出,也能確保發生這種情況。 - 值得注意的是 - share_memory_()和- from_file()使用- shared = True之間的差異- share_memory_使用 shm_open(3) 來建立 POSIX 共享記憶體物件,而- from_file()使用 open(2) 來開啟使用者傳遞的檔案名稱。
- 兩者都使用帶有 - MAP_SHARED的 mmap(2) 呼叫 來將檔案/物件映射到當前的虛擬地址空間
- share_memory_會在映射物件後呼叫- shm_unlink(3),以確保在沒有進程開啟物件時釋放共享記憶體物件。- torch.from_file(shared=True)不會取消連結檔案。此檔案是永久性的,並且會一直保留到使用者將其刪除為止。
 - 回傳
- self
 
 - short()¶
- 將此儲存體轉換為 short 類型。 
 - to(*, device, non_blocking=False)¶
- 回傳型別
- T 
 
 - tolist()¶
- 回傳一個包含此儲存體元素的清單。 
 - type(dtype=None, non_blocking=False, **kwargs)¶
- 如果未提供 dtype,則回傳類型,否則將此物件轉換為指定的類型。 - 如果這已經是正確的類型,則不會執行任何複製,並且會回傳原始物件。 
 - untyped()¶
 
- class torch.BFloat16Storage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]¶
- class torch.ComplexDoubleStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]¶
- class torch.ComplexFloatStorage(*args, wrap_storage=None, dtype=None, device=None, _internal=False)[原始碼]¶