torch.frombuffer¶
- torch.frombuffer(buffer, *, dtype, count=-1, offset=0, requires_grad=False) Tensor ¶
從實現 Python buffer 協議的物件建立一個 1 維的
Tensor
。跳過 buffer 中的前
offset
個位元組,並將其餘的原始位元組解釋為類型為dtype
且具有count
個元素的 1 維 tensor。請注意,以下其中一項必須為真:
1.
count
是一個正的非零數字,且 buffer 中的總位元組數大於offset
加上count
乘以dtype
的大小(以位元組為單位)。2.
count
是負數,且 buffer 的長度(位元組數)減去offset
後的值是dtype
的大小(以位元組為單位)的倍數。返回的 tensor 和 buffer 共享相同的記憶體。 對 tensor 的修改將反映在 buffer 中,反之亦然。 返回的 tensor 不可調整大小。
注意
此函數會增加擁有共享記憶體之物件的參考計數。 因此,在返回的 tensor 超出範圍之前,不會解除分配此類記憶體。
警告
當傳遞一個實現 buffer 協定但其資料不在 CPU 上的物件時,此函數的行為未定義。 這樣做很可能會導致區段錯誤。
- 參數
buffer (object) – 一個公開 buffer 介面的 Python 物件。
- 關鍵字參數
dtype (
torch.dtype
) – 返回 tensor 的所需資料類型。count (int, optional) – 要讀取的所需元素數量。 如果為負數,將讀取所有元素(直到 buffer 結束)。 預設值:-1。
offset (int, optional) – 在 buffer 開頭要跳過的位元組數。 預設值:0。
requires_grad (bool, optional) – 如果 autograd 應該記錄返回 tensor 的操作。 預設值:
False
。
範例
>>> import array >>> a = array.array('i', [1, 2, 3]) >>> t = torch.frombuffer(a, dtype=torch.int32) >>> t tensor([ 1, 2, 3]) >>> t[0] = -1 >>> a array([-1, 2, 3]) >>> # Interprets the signed char bytes as 32-bit integers. >>> # Each 4 signed char elements will be interpreted as >>> # 1 signed 32-bit integer. >>> import array >>> a = array.array('b', [-1, 0, 0, 0]) >>> torch.frombuffer(a, dtype=torch.int32) tensor([255], dtype=torch.int32)