TensorBuffer

公開抽象類別 TensorBuffer
已知的直接子類別

代表模型輸入或輸出內容的資料緩衝區。

公用方法

靜態 TensorBuffer
createDynamic(DataType資料類型)
建立具有指定 DataType 的空白動態 TensorBuffer
靜態 TensorBuffer
createFixedSize(int[] 形狀、DataType dataType)
使用指定的 shapeDataType 建立 TensorBuffer
靜態 TensorBuffer
createFrom(TensorBuffer 緩衝區、DataType 資料類型)
使用指定的 DataType 從其他來源建立 TensorBuffer 深複製資料。
ByteBuffer
getBuffer()
傳回資料緩衝區。
抽象 DataType
getDataType()
傳回這個緩衝區的資料類型。
攔截
getFlatSize()
取得緩衝區的 smallSize。
抽象 float[]
getFloatArray()
傳回儲存在這個緩衝區中的值的浮點陣列。
抽象 浮點值
getFloatValue(int absIndex)
傳回指定索引的浮點值。
抽象 整數 []
getIntArray()
傳回儲存在這個緩衝區中的值的 int 陣列。
抽象 攔截
getIntValue(int absIndex)
傳回指定索引的 int 值。
整數 []
getShape()
取得目前的形狀。
抽象 攔截
getTypeSize()
傳回陣列中單一元素的位元組數。
布林值
isDynamic()
如果 TensorBuffer 是動態大小,則傳回 (可任意調整大小)。
抽象 void
loadArray(int[] src, int[] Shape)
將特定形狀的 int 陣列載入這個緩衝區。
抽象 void
loadArray(float[] src, int[] Shape)
將浮點陣列載入特定形狀的緩衝區。
void
loadArray(float[] src)
將浮點陣列載入這個緩衝區。
void
loadArray(int[] src)
將 int 陣列載入這個緩衝區。
void
loadBuffer(ByteBuffer 緩衝區)
將位元組緩衝區載入這個 TensorBuffer
void
loadBuffer(ByteBuffer buffer, int[] Shape)
將位元組緩衝區載入特定形狀的 TensorBuffer

繼承的方法

公用方法

公開 靜態 TensorBuffer createDynamic (DataType資料類型)

建立具有指定 DataType 的空白動態 TensorBuffer。形狀的形狀 已建立「TensorBuffer」{0}。

載入陣列或資料緩衝區時,動態 TensorBuffers 會重新分配記憶體 緩衝區大小不同以下列舉幾個例子:

 // Creating a float dynamic TensorBuffer:
 TensorBuffer tensorBuffer = TensorBuffer.createDynamic(DataType.FLOAT32);
 // Loading a float array:
 float[] arr1 = new float[] {1, 2, 3};
 tensorBuffer.loadArray(arr, new int[] {arr1.length});
 // loading another float array:
 float[] arr2 = new float[] {1, 2, 3, 4, 5};
 tensorBuffer.loadArray(arr, new int[] {arr2.length});
 // loading a third float array with the same size as arr2, assuming shape doesn't change:
 float[] arr3 = new float[] {5, 4, 3, 2, 1};
 tensorBuffer.loadArray(arr);
 // loading a forth float array with different size as arr3 and omitting the shape will result
 // in error:
 float[] arr4 = new float[] {3, 2, 1};
 tensorBuffer.loadArray(arr); // Error: The size of byte buffer and the shape do not match.
 

參數
dataType 要建立 TensorBuffer 的資料類型。

公開 靜態 TensorBuffer createFixedSize (int[] 形狀,DataType資料類型)

使用指定的 shapeDataType 建立 TensorBuffer。以下是一些 範例:

 // Creating a float TensorBuffer with shape {2, 3}:
 int[] shape = new int[] {2, 3};
 TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.FLOAT32);
 
 // Creating an uint8 TensorBuffer of a scalar:
 int[] shape = new int[] {};
 TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.UINT8);
 
 // Creating an empty uint8 TensorBuffer:
 int[] shape = new int[] {0};
 TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.UINT8);
 

固定大小的 TensorBuffer 一經建立即無法變更。

參數
形狀 待建立的 TensorBuffer 形狀。
dataType 要建立 TensorBuffer 的資料類型。
擲回
NullPointerException 如果 shape 為空值。
IllegalArgumentException 如果 shape 含有非正數元素。

公開 靜態 TensorBuffer createFrom (TensorBuffer 緩衝區、DataType資料類型)

使用指定的 DataType 從其他來源建立 TensorBuffer 深複製資料。

參數
緩衝區 要複製的來源 TensorBuffer
dataType 新建立的「TensorBuffer」預期有 DataType
擲回
NullPointerException 如果 buffer 為空值。

公開 ByteBuffer getBuffer ()

傳回資料緩衝區。

公開 抽象 DataType getDataType ()

傳回這個緩衝區的資料類型。

公開 攔截 getFlatSize ()

取得緩衝區的 smallSize。

擲回
IllegalStateException 如果基礎資料損毀

公開 抽象 float[] getFloatArray ()

傳回儲存在這個緩衝區中的值的浮點陣列。如果緩衝區屬於不同型別 值就會轉換為浮點值例如,TensorBufferUint8 中的值會從 uint8 轉換為 float。

公開 抽象 浮點值 getFloatValue (int absIndex)

傳回指定索引的浮點值。如果緩衝區的型別與浮點值不同, 值會轉換為浮點值。例如,讀取 TensorBufferUint8 中的值時,該值會先顯示為 uint8,然後再從 使用 uint8 來浮動值。

 For example, a TensorBuffer with shape {2, 3} that represents the following array,
 [[0.0f, 1.0f, 2.0f], [3.0f, 4.0f, 5.0f]].

 The fourth element (whose value is 3.0f) in the TensorBuffer can be retrieved by:
 float v = tensorBuffer.getFloatValue(3);
 

參數
absIndex 待讀取值的絕對索引。

公開 抽象 整數 [] getIntArray ()

傳回儲存在這個緩衝區中的值的 int 陣列。如果緩衝區類型不同 系統會將值轉換為 int,而精確度可能會降低。例如: 從 TensorBufferFloat 取得值為 {400.32f, 23.04f} 的 int 陣列,輸出結果 為 {400, 23}。

公開 抽象 攔截 getIntValue (int absIndex)

傳回指定索引的 int 值。如果緩衝區的型別與 int 不同,則值 會轉換為 int例如,在讀取 TensorBufferFloat 中的值時 這些值會先以浮點值的形式顯示,接著才會從浮點值轉換為 int,損失 但可能有精確的精確度

 For example, a TensorBuffer with shape {2, 3} that represents the following array,
 [[0.0f, 1.0f, 2.0f], [3.0f, 4.0f, 5.0f]].

 The fourth element (whose value is 3.0f) in the TensorBuffer can be retrieved by:
 int v = tensorBuffer.getIntValue(3);
 Note that v is converted from 3.0f to 3 as a result of type conversion.
 

參數
absIndex 待讀取值的絕對索引。

公開 整數 [] getShape ()

取得目前的形狀。(在此傳回副本以避免意外修改)。

擲回
IllegalStateException 如果基礎資料損毀

公開 抽象 攔截 getTypeSize ()

傳回陣列中單一元素的位元組數。舉例來說,浮動緩衝區會 會傳回 4,而位元組緩衝區會傳回 1。

公開 布林值 isDynamic ()

如果 TensorBuffer 是動態大小,則傳回 (可任意調整大小)。

公開 抽象 void loadArray (int[] src, int[] 形狀)

將特定形狀的 int 陣列載入這個緩衝區。如果緩衝區屬於不同型別 大於 int,值會先轉換為緩衝區的型別,才載入到 但精確度可能會降低舉例來說,載入值為 {400、 -23} 轉換為 TensorBufferUint8,其值會限制為 [0, 255],然後 由 {255, 0} 投放到 uint8。

參數
src 要載入的來源陣列。
形狀 src 代表的張量形狀。
擲回
NullPointerException 如果 src 為空值。
NullPointerException 如果 shape 為空值。
IllegalArgumentException 如果要載入的陣列大小與 指定的形狀。

公開 抽象 void loadArray (float[] src, int[] 形狀)

將浮點陣列載入特定形狀的緩衝區。如果緩衝區屬於不同型別 的值會先轉換為緩衝區的型別,才載入到 但精確度可能會降低舉例來說,將浮點陣列載入 TensorBufferUint8,並將值設為 {400.32f, -23.04f},並將值限制為 [0, 255], 然後由 {255, 0} 投放到 uint8。

參數
src 要載入的來源陣列。
形狀 src 代表的張量形狀。
擲回
NullPointerException 如果 src 為空值。
NullPointerException 如果 shape 為空值。
IllegalArgumentException 如果要載入的陣列大小與 指定的形狀。

公開 void loadArray (浮點值 [] src)

將浮點陣列載入這個緩衝區。如果緩衝區的型別與浮點值不同, 值會在載入緩衝區前轉換為緩衝區類型,並遺失 但可能有精確的精確度例如,將浮點陣列載入 TensorBufferUint8 值為 {400.32f, -23.04f},系統會將這些值調整為 [0, 255],並轉換為 uint8 by {255, 0}。

使用這個方法時,系統會假設 src 的形狀與這個形狀相同 TensorBuffer。因此,buffer (src.length) 的大小應一律相符 此 TensorBuffer 的固定大小,適用於固定大小和動態 TensorBuffer。如果 src 不同形狀,請使用 loadArray(float[], int[])

參數
src 要載入的來源陣列。

公開 void loadArray (int[] src)

將 int 陣列載入這個緩衝區。如果緩衝區的型別與 int 不同,則值會顯示 會轉換為緩衝區的型別,才載入緩衝區中, 但精確度可能會更高。舉例來說,將值為 {400, -23} 的 int 陣列載入 TensorBufferUint8 中,系統會將這些值調整為 [0, 255],並轉換為 uint8,方法是: {255, 0}。

使用這個方法時,系統會假設 src 的形狀與這個形狀相同 TensorBuffer。因此,buffer (src.length) 的大小應一律相符 此 TensorBuffer 的固定大小,適用於固定大小和動態 TensorBuffer。如果 src 不同形狀,請使用 loadArray(int[], int[])

參數
src 要載入的來源陣列。

公開 void loadBuffer (ByteBuffer 緩衝區)

將位元組緩衝區載入這個 TensorBuffer。緩衝區空間必須與 此TensorBuffer

使用這個方法時,系統會假設 buffer 的形狀與這個形狀相同 TensorBuffer。因此,buffer (buffer.limit()) 的大小應一律為 符合這個 TensorBuffer 的固定大小,適用於固定大小和動態 TensorBuffer。如果 buffer 不同,請使用 loadBuffer(ByteBuffer, int[]) 形狀。

重要事項:載入的緩衝區為參照。請勿修改。我們不會在這裡建立 但如果需要修改,請建立副本

為獲得最佳效能,請一律載入直接的 ByteBufferByteBuffer 陣列。

如果 buffer 為唯讀性質,我們會採用複製/寫入策略來提高效能。

參數
緩衝區 要載入的位元組緩衝區。

公開 void loadBuffer (ByteBuffer 緩衝區, int[] 形狀)

將位元組緩衝區載入特定形狀的 TensorBuffer

重要事項:載入的緩衝區為參照。請勿修改。我們不會在這裡建立 但如果需要修改,請建立副本

為獲得最佳效能,請一律載入直接的 ByteBufferByteBuffer 陣列。

參數
緩衝區 要載入的位元組緩衝區。
形狀
擲回
NullPointerException 如果 buffer 為空值。
IllegalArgumentException 表示 buffertypeSize 的大小 或 bufferflatSize 的大小不相符。