torch.frombuffer¶
- torch.frombuffer(buffer, *, dtype, count=-1, offset=0, requires_grad=False) Tensor¶
從實現了 Python 緩衝協議的物件建立一個 1 維
Tensor。跳過緩衝區中的前
offset位元組,將剩餘的原始位元組解釋為一個 1 維張量,其型別為dtype,包含count個元素。請注意,以下任一條件必須為真:
1.
count是一個非零正數,且緩衝區中的總位元組數大於offset加上count乘以dtype的大小(以位元組為單位)。2.
count為負數,且緩衝區的長度(位元組數)減去offset是dtype大小(以位元組為單位)的倍數。返回的張量與緩衝區共享同一記憶體。對張量的修改會反映在緩衝區中,反之亦然。返回的張量不可調整大小。
注意
此函式會增加擁有共享記憶體的物件的引用計數。因此,在該返回的張量超出作用域之前,該記憶體不會被釋放。
警告
當傳遞一個實現了緩衝協議但其資料不在 CPU 上的物件時,此函式的行為是未定義的。這樣做很可能會導致段錯誤。
- 引數
buffer (object) – 一個暴露緩衝介面的 Python 物件。
- 關鍵字引數
dtype (
torch.dtype) – 返回張量所需的資料型別。count (int, optional) – 要讀取的元素數量。如果為負數,則讀取所有元素(直到緩衝區末尾)。預設值:-1。
offset (int, optional) – 在緩衝區開頭要跳過的位元組數。預設值:0。
requires_grad (bool, optional) – autograd 是否應記錄返回張量上的操作。預設值:
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)