快捷方式

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 為負數,且緩衝區的長度(位元組數)減去 offsetdtype 大小(以位元組為單位)的倍數。

返回的張量與緩衝區共享同一記憶體。對張量的修改會反映在緩衝區中,反之亦然。返回的張量不可調整大小。

注意

此函式會增加擁有共享記憶體的物件的引用計數。因此,在該返回的張量超出作用域之前,該記憶體不會被釋放。

警告

當傳遞一個實現了緩衝協議但其資料不在 CPU 上的物件時,此函式的行為是未定義的。這樣做很可能會導致段錯誤。

警告

此函式不會嘗試推斷 dtype(因此,它不是可選的)。傳遞與源資料型別不同的 dtype 可能會導致意外行為。

引數

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)

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得解答

檢視資源