已知的直接子類別 |
代表模型輸入或輸出的資料緩衝區。
公用方法
靜態 TensorBuffer | |
靜態 TensorBuffer | |
靜態 TensorBuffer | |
ByteBuffer |
getBuffer()
傳回資料緩衝區。
|
抽象 DataType |
getDataType()
傳回這個緩衝區的資料類型。
|
int |
getFlatSize()
取得緩衝區的 FlatSize。
|
抽象 浮點值 [] |
getFloatArray()
傳回儲存在此緩衝區中的值的浮點陣列。
|
抽象 浮點值 |
getFloatValue(int absIndex)
傳回指定索引的浮點值。
|
抽象 int[] |
getIntArray()
傳回此緩衝區中儲存的值 int 陣列。
|
抽象 int |
getIntValue(int absIndex)
傳回指定索引的 int 值。
|
int[] |
getShape()
取得目前的形狀。
|
抽象 int |
getTypeSize()
傳回陣列中單一元素的位元組數。
|
布林值 |
isDynamic()
如果
TensorBuffer 為動態大小 (可以任意調整大小),則傳回 。 |
抽象 void |
loadArray(int[] src, int[] 形狀)
以特定形狀將 int 陣列載入這個緩衝區。
|
抽象 void |
loadArray(float[] src, int[] 形狀)
以特定形狀將浮點陣列載入此緩衝區。
|
void |
loadArray(float[] src)
將浮點陣列載入這個緩衝區。
|
void |
loadArray(int[] src)
將 int 陣列載入這個緩衝區。
|
void | |
void |
繼承的方法
公用方法
public static TensorBuffer createDynamic (DataType 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 dataType)
建立具有指定 shape
和 DataType
的 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 大小在建立後即無法變更。
參數
shape | 要建立的 TensorBuffer 形狀。 |
---|---|
dataType | 要建立 TensorBuffer 的資料類型。 |
擲回
NullPointerException | 如果 shape 為空值。 |
---|---|
IllegalArgumentException | 如果 shape 含有非正面元素。 |
公開 靜態 TensorBuffer createFrom (TensorBuffer 緩衝區、DataType dataType)
以指定 DataType
從另一個網域建立 TensorBuffer
深複製資料。
參數
緩衝區 | 來源 TensorBuffer 。 |
---|---|
dataType | 新建的TensorBuffer 預期DataType 。 |
擲回
NullPointerException | 如果 buffer 為空值。 |
---|
public 抽象浮點值 float[] getFloatArray ()
傳回儲存在此緩衝區中的值的浮點陣列。如果緩衝區的類型與浮點值不同,系統會將值轉換為浮點值。舉例來說,TensorBufferUint8
中的值會從 uint8 轉換為浮點值。
public 抽象浮點值 浮點值 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 | 要讀取值的絕對索引。 |
---|
public 抽象 int[] getIntArray ()
傳回此緩衝區中儲存的值 int 陣列。如果緩衝區的類型與 int 不同,系統會將值轉換為 int 值,並可能會失去精確度。舉例來說,從值為 {400.32f, 23.04f} 的 TensorBufferFloat
取得 int 陣列,輸出為 {400, 23}。
public 抽象化 int 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 | 要讀取值的絕對索引。 |
---|
public 抽象 int getTypeSize ()
傳回陣列中單一元素的位元組數。舉例來說,一個浮點緩衝區會傳回 4,位元組緩衝區會傳回 1。
public 抽象 void loadArray (int[] src, int[] 形狀)
以特定形狀將 int 陣列載入這個緩衝區。如果緩衝區的類型與 int 不同,值會先轉換為緩衝區的類型,然後再載入緩衝區,並可能會失去精確度。例如,將值為 {400, -23} 的 int 陣列載入 TensorBufferUint8
,其值會限制為 [0, 255],接著轉換為 uint8 x {255, 0}。
參數
src | 要載入的來源陣列。 |
---|---|
shape | src 所代表的張量形狀。 |
擲回
NullPointerException | 如果 src 為空值。 |
---|---|
NullPointerException | 如果 shape 為空值。 |
IllegalArgumentException | 表示要載入的陣列大小與指定的形狀不符。 |
public 抽象 void loadArray (float[] src, int[] 形狀)
以特定形狀將浮點陣列載入此緩衝區。如果緩衝區的類型與浮點值不同,系統會將值先轉換為緩衝區的類型,然後再載入緩衝區,並可能會失去精確度。舉例來說,將浮點陣列載入值為 {400.32f, -23.04f} 的 TensorBufferUint8
,值會限制為 [0, 255],然後轉換為 uint8 x {255, 0}。
參數
src | 要載入的來源陣列。 |
---|---|
shape | src 所代表的張量形狀。 |
擲回
NullPointerException | 如果 src 為空值。 |
---|---|
NullPointerException | 如果 shape 為空值。 |
IllegalArgumentException | 表示要載入的陣列大小與指定的形狀不符。 |
public void loadArray (float[] src)
將浮點陣列載入這個緩衝區。如果緩衝區的類型與浮點值不同,系統會將值先轉換為緩衝區的類型,然後再載入緩衝區,並可能會失去精確度。舉例來說,將浮點陣列載入值為 {400.32f, -23.04f} 的 TensorBufferUint8
,值會限制為 [0, 255],然後轉換為 uint8 x {255, 0}。
使用這個方法假設 src
的形狀與此 TensorBuffer
的形狀相同。因此,無論是固定大小還是動態 TensorBuffer
,buffer
的大小 (src.length
) 一律應與這個 TensorBuffer
的固定大小相符。如果 src
有其他形狀,請使用 loadArray(float[], int[])
。
參數
src | 要載入的來源陣列。 |
---|
public void loadArray (int[] src)
將 int 陣列載入這個緩衝區。如果緩衝區的類型與 int 不同,這些值會先轉換為緩衝區的類型,然後再載入緩衝區,並可能會失去精確度。例如,將值為 {400, -23} 的 int 陣列載入 TensorBufferUint8
,其值會限制為 [0, 255],然後由 {255, 0} 轉換為 uint8。
使用這個方法假設 src
的形狀與此 TensorBuffer
的形狀相同。因此,無論是固定大小還是動態 TensorBuffer
,buffer
的大小 (src.length
) 一律應與這個 TensorBuffer
的固定大小相符。如果 src
有其他形狀,請使用 loadArray(int[], int[])
。
參數
src | 要載入的來源陣列。 |
---|
public void loadBuffer (ByteBuffer 緩衝區)
將位元組緩衝區載入這個 TensorBuffer
。緩衝區大小必須與這個 TensorBuffer
的固定大小相符。
使用這個方法假設 buffer
的形狀與此 TensorBuffer
的形狀相同。因此,無論是固定大小還是動態 TensorBuffer
,buffer
的大小 (buffer.limit()
) 應一律與這個 TensorBuffer
的固定大小相符。如果 buffer
有其他形狀,請使用 loadBuffer(ByteBuffer, int[])
。
重要事項:載入的緩衝區是參照項目。請勿修改。我們不會在這裡建立副本以提升成效,但如果需要修改,請建立副本。
為獲得最佳效能,請一律載入直接由陣列支援的 ByteBuffer
或 ByteBuffer
。
如果 buffer
為唯讀狀態,我們會採用寫入複製策略來提高成效。
參數
緩衝區 | 要載入的位元組緩衝區。 |
---|
public void loadBuffer (ByteBuffer buffer, int[] 形狀)
以特定形狀將位元組緩衝區載入這個 TensorBuffer
。
重要事項:載入的緩衝區是參照項目。請勿修改。我們不會在這裡建立副本以提升成效,但如果需要修改,請建立副本。
為獲得最佳效能,請一律載入直接由陣列支援的 ByteBuffer
或 ByteBuffer
。
參數
緩衝區 | 要載入的位元組緩衝區。 |
---|---|
shape |
擲回
NullPointerException | 如果 buffer 為空值。 |
---|---|
IllegalArgumentException | 如果 buffer 和 typeSize 的大小不相符,或是 buffer 和 flatSize 的大小不符。 |