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)[原始碼]¶