TensorBuffer

パブリック抽象クラスTensorBuffer
既知の直接サブクラス

モデルの入力または出力のデータ バッファーを表します。

パブリックメソッド

静的TensorBuffer
createDynamic (データタイプdataType)
指定されたDataTypeを使用して空の動的TensorBufferを作成します。
静的TensorBuffer
createFixedSize (int[] 形状、 DataType dataType)
指定されたshapeDataTypeTensorBufferを作成します。
静的TensorBuffer
createFrom ( TensorBufferバッファ、 DataType dataType)
指定されたDataTypeを使用して、別のデータからデータをディープコピーするTensorBufferを作成します。
バイトバッファ
getBuffer ()
データバッファを返します。
抽象データ型
getDataType ()
このバッファのデータ型を返します。
整数
getFlatSize ()
バッファの flatSize を取得します。
抽象浮動小数点数[]
getFloatArray ()
このバッファに格納されている値の float 配列を返します。
抽象的なフロート
getFloatValue (int absIndex)
指定されたインデックスの float 値を返します。
抽象整数[]
getIntArray ()
このバッファに格納されている値の int 配列を返します。
抽象整数
getIntValue (int absIndex)
指定されたインデックスの int 値を返します。
int[]
getShape ()
現在の形状を取得します。
抽象整数
getTypeSize ()
配列内の単一要素のバイト数を返します。
ブール値
isDynamic ()
TensorBufferが動的サイズであるかどうかを返します (任意にサイズ変更できる)。
抽象的な空白
loadArray (int[] src、int[] シェイプ)
特定の形状を持つ int 配列をこのバッファーにロードします。
抽象的な空白
loadArray (float[] src、int[] シェイプ)
特定の形状を持つ浮動小数点配列をこのバッファーにロードします。
空所
loadArray (float[] src)
float 配列をこのバッファにロードします。
空所
ロード配列(int[] src)
int 配列をこのバッファにロードします。
空所
loadBuffer ( ByteBufferバッファ)
バイト バッファをこのTensorBufferにロードします。
空所
loadBuffer ( ByteBufferバッファ、int[] 形状)
バイト バッファを特定の形状でこのTensorBufferにロードします。

継承されたメソッド

パブリックメソッド

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.
 

パラメーター
データ・タイプ作成されるTensorBufferの dataType。

public static TensorBuffer createFixedSize (int[] 形状、 DataType dataType)

指定されたshapeDataTypeTensorBufferを作成します。以下にいくつかの例を示します。

 // 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の形状。
データ・タイプ作成されるTensorBufferの dataType。
投げる
NullPointerException shapeが null の場合。
IllegalArgumentException shapeに非正の要素がある場合。

public static TensorBuffer createFrom ( TensorBufferバッファ、 DataType dataType)

指定されたDataTypeを使用して、別のデータからデータをディープコピーするTensorBufferを作成します。

パラメーター
バッファコピー元のソースTensorBuffer
データ・タイプ新しく作成されたTensorBufferの予想されるDataType
投げる
NullPointerException bufferがnullの場合。

public ByteBuffer getBuffer ()

データバッファを返します。

public abstract DataType getDataType ()

このバッファのデータ型を返します。

public int getFlatSize ()

バッファの flatSize を取得します。

投げる
IllegalStateException基礎となるデータが破損している場合

パブリック抽象 float[] getFloatArray ()

このバッファに格納されている値の float 配列を返します。バッファーの型が float ではない場合、値は float に変換されます。たとえば、 TensorBufferUint8の値は uint8 から float に変換されます。

public abstract float getFloatValue (int absIndex)

指定されたインデックスの float 値を返します。バッファーの型が float 以外の場合、値は float に変換されます。たとえば、 TensorBufferUint8から値を読み取る場合、値は最初に uint8 として読み取られ、次に uint8 から float に変換されます。

 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);
 

パラメーター
腹筋インデックス読み取られる値の絶対インデックス。

public abstract int[] getIntArray ()

このバッファに格納されている値の int 配列を返します。バッファーの型が int とは異なる場合、値は int に変換され、精度が失われる可能性があります。たとえば、値が {400.32f, 23.04f} であるTensorBufferFloatから int 配列を取得すると、出力は {400, 23} になります。

public abstract int getIntValue (int absIndex)

指定されたインデックスの int 値を返します。バッファーの型が int 以外の場合、値は int に変換されます。たとえば、 TensorBufferFloatから値を読み取る場合、値は最初に float として読み取られ、次に float から 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.
 

パラメーター
腹筋インデックス読み取られる値の絶対インデックス。

public int[] getShape ()

現在の形状を取得します。 (予期しない変更を避けるために、ここでコピーを返します。)

投げる
IllegalStateException基礎となるデータが破損している場合

パブリック抽象 int getTypeSize ()

配列内の単一要素のバイト数を返します。たとえば、浮動小数点バッファは 4 を返し、バイト バッファは 1 を返します。

パブリックブール値isDynamic ()

TensorBufferが動的サイズであるかどうかを返します (任意にサイズ変更できる)。

public abstract void loadArray (int[] src, int[] 形状)

特定の形状を持つ int 配列をこのバッファーにロードします。バッファーの型が int 以外の場合、値はバッファーにロードされる前にバッファーの型に変換され、精度が失われる可能性があります。たとえば、値 {400, -23} を持つ int 配列をTensorBufferUint8にロードすると、値は [0, 255] にクランプされ、その後、{255, 0} によって uint8 にキャストされます。

パラメーター
送信元ロードされるソース配列。
srcが表すテンソルの形状。
投げる
NullPointerException srcが null の場合。
NullPointerException shapeが null の場合。
IllegalArgumentExceptionロードされる配列のサイズが指定された形状と一致しない場合。

public abstract void loadArray (float[] src、int[] 形状)

特定の形状を持つ浮動小数点配列をこのバッファーにロードします。バッファーが float とは異なる型である場合、値はバッファーにロードされる前にバッファーの型に変換され、精度が失われる可能性があります。たとえば、値 {400.32f, -23.04f} を持つ float 配列をTensorBufferUint8にロードすると、値は [0, 255] にクランプされ、その後、{255, 0} によって uint8 にキャストされます。

パラメーター
送信元ロードされるソース配列。
srcが表すテンソルの形状。
投げる
NullPointerException srcが null の場合。
NullPointerException shapeが null の場合。
IllegalArgumentExceptionロードされる配列のサイズが指定された形状と一致しない場合。

public void loadArray (float[] src)

float 配列をこのバッファにロードします。バッファーが float とは異なる型である場合、値はバッファーにロードされる前にバッファーの型に変換され、精度が失われる可能性があります。たとえば、値 {400.32f, -23.04f} を持つ float 配列をTensorBufferUint8にロードすると、値は [0, 255] にクランプされ、その後、{255, 0} によって uint8 にキャストされます。

このメソッドを使用すると、 srcの形状がこのTensorBufferの形状と同じであると想定されます。したがって、 buffer ( src.length ) のサイズは、固定サイズと動的TensorBufferの両方で、常にこのTensorBufferのフラット サイズと一致する必要があります。 src形状が異なる場合は、 loadArray(float[], int[])を使用します。

パラメーター
送信元ロードされるソース配列。

public void loadArray (int[] src)

int 配列をこのバッファにロードします。バッファーの型が int 以外の場合、値はバッファーにロードされる前にバッファーの型に変換され、精度が失われる可能性があります。たとえば、値 {400, -23} を持つ int 配列をTensorBufferUint8にロードすると、値は [0, 255] にクランプされ、その後、{255, 0} によって uint8 にキャストされます。

このメソッドを使用すると、 srcの形状がこのTensorBufferの形状と同じであると想定されます。したがって、 buffer ( src.length ) のサイズは、固定サイズと動的TensorBufferの両方で、常にこのTensorBufferのフラット サイズと一致する必要があります。 src形状が異なる場合は、 loadArray(int[], int[])を使用します。

パラメーター
送信元ロードされるソース配列。

public void loadBuffer ( ByteBufferバッファ)

バイト バッファをこのTensorBufferにロードします。バッファ サイズは、このTensorBufferのフラット サイズと一致する必要があります。

このメソッドを使用すると、 bufferの形状がこのTensorBufferの形状と同じであることが前提となります。したがって、 buffer ( buffer.limit() ) のサイズは、固定サイズと動的TensorBufferの両方で、常にこのTensorBufferのフラット サイズと一致する必要があります。 buffer形状が異なる場合は、 loadBuffer(ByteBuffer, int[])を使用します。

重要: ロードされたバッファは参照です。変更しないでください。パフォーマンスを考慮してここではコピーを作成しませんが、変更が必要な場合はコピーを作成してください。

最高のパフォーマンスを得るには、常に直接ByteBufferまたは配列によってバックアップされたByteBufferをロードしてください。

bufferが読み取り専用の場合、パフォーマンスのためにコピーオンライト戦略を採用します。

パラメーター
バッファロードするバイトバッファ。

public void loadBuffer ( ByteBufferバッファー、int[] 形状)

バイト バッファを特定の形状でこのTensorBufferにロードします。

重要: ロードされたバッファは参照です。変更しないでください。パフォーマンスを考慮してここではコピーを作成しませんが、変更が必要な場合はコピーを作成してください。

最高のパフォーマンスを得るには、常に直接ByteBufferまたは配列によってバックアップされたByteBufferをロードしてください。

パラメーター
バッファロードするバイトバッファ。
投げる
NullPointerException bufferがnullの場合。
IllegalArgumentException bufferのサイズとtypeSize一致しない場合、またはbufferのサイズとflatSizeが一致しない場合。