TensorLabel は、軸上に意味のあるラベルを持つ TensorBuffers のユーティリティ ラッパーです。
たとえば、画像分類モデルは、{1, 10} のような形状を持つ出力テンソルを持つ場合があります。ここで、1 はバッチ サイズ、10 はカテゴリの数です。実際、2 番目の軸では、対応する各カテゴリの名前または説明を使用して各サブテンソルにラベルを付けることができます。 TensorLabel
TensorBuffer
内のプレーン Tensor を、事前定義されたラベルからサブテンソルへのマップに変換するのに役立ちます。この場合、2 番目の軸に 10 個のラベルが指定されている場合、 TensorLabel
元の {1, 10} テンソルを 10 要素マップに変換できます。その各値は形状 {} (スカラー) のテンソルです。使用例:
TensorBuffer outputTensor = ...; List<String> labels = FileUtil.loadLabels(context, labelFilePath); // labels the first axis with size greater than one TensorLabel labeled = new TensorLabel(labels, outputTensor); // If each sub-tensor has effectively size 1, we can directly get a float value Map<String, Float> probabilities = labeled.getMapWithFloatValue(); // Or get sub-tensors, when each sub-tensor has elements more than 1 Map<String, TensorBuffer> subTensors = labeled.getMapWithTensorBuffer();
注: 現在、サイズが 1 より大きい最初のラベルのテンソルからマップへの変換のみをサポートしています。
パブリックコンストラクター
TensorLabel ( Map < Integer 、 List < String >> axisLabels、 TensorBuffer tensorBuffer) 多次元テンソルの軸にラベルを付けることができる TensorLabel オブジェクトを作成します。 | |
TensorLabel ( List < String > axisLabels、 TensorBuffer tensorBuffer) 多次元テンソルの 1 つの軸にラベルを付けることができる TensorLabel オブジェクトを作成します。 |
パブリックメソッド
一覧<カテゴリ> | getCategoryList () TensorLabel オブジェクトからCategory のリストを取得します。 |
マップ< String 、 Float > | getMapWithFloatValue () ラベルを float にマップするマップを取得します。 |
Map < String , TensorBuffer > | getMapWithTensorBuffer () ラベルと対応する TensorBuffer のペアを持つマップを取得します。 |
継承されたメソッド
パブリックコンストラクター
public TensorLabel ( Map < Integer , List < String >> axisLabels, TensorBuffer tensorBuffer)
多次元テンソルの軸にラベルを付けることができる TensorLabel オブジェクトを作成します。
パラメーター
軸ラベル | キーが軸 ID (0 から始まる) で、値が対応するラベルであるマップ。注: ラベルのサイズは、その軸上のテンソルのサイズと同じである必要があります。 |
---|---|
テンソルバッファ | ラベルを付ける TensorBuffer。 |
投げる
NullPointerException | axisLabels またはtensorBuffer null の場合、またはaxisLabels のいずれかの値が null の場合。 |
---|---|
IllegalArgumentException | axisLabels のキーのいずれかが範囲外にある場合 ( tensorBuffer の形状と比較して)、または任意の値 (ラベル) が指定された次元のtensorBuffer とサイズが異なる場合。 |
public TensorLabel ( List < String > axisLabels, TensorBuffer tensorBuffer)
多次元テンソルの 1 つの軸にラベルを付けることができる TensorLabel オブジェクトを作成します。
注: ラベルは、サイズが 1 より大きい最初の軸に適用されます。たとえば、テンソルの形状が [1, 10, 3] の場合、ラベルは軸 1 (ID は 0 から始まります) に適用されます。また、 axisLabels
のサイズも 10 にする必要があります。
パラメーター
軸ラベル | ラベルのリスト。そのサイズは、ラベル付けされる軸上のテンソルのサイズと同じである必要があります。 |
---|---|
テンソルバッファ | ラベルを付ける TensorBuffer。 |
パブリックメソッド
public List <カテゴリ> getCategoryList ()
TensorLabel
オブジェクトからCategory
のリストを取得します。
ラベルの軸は事実上最後の軸である必要があります (つまり、この軸で指定されたすべてのサブテンソルのフラット サイズは 1 である必要があります)。そのため、ラベル付きの各サブテンソルは浮動小数点数スコアに変換できます。例: 形状{2, 5, 3}
および軸 2 のTensorLabel
有効です。 axis が 1 または 0 の場合、 Category
に変換できません。
getMapWithFloatValue()
は代替手段ですが、結果としてMap
を返します。
投げる
IllegalStateException | 各ラベルのサブテンソルのサイズが 1 ではない場合。 |
---|
public Map < String , Float > getMapWithFloatValue ()
ラベルを float にマップするマップを取得します。サイズが 1 より大きい最初の軸でのみマッピングを許可し、その軸は事実上最後の軸である必要があります (つまり、この軸で指定されたすべてのサブテンソルのフラット サイズは 1 である必要があります)。
getCategoryList()
は、結果を取得するための代替 API です。
投げる
IllegalStateException | 各ラベルのサブテンソルのサイズが 1 ではない場合。 |
---|
public Map < String , TensorBuffer > getMapWithTensorBuffer ()
ラベルと対応する TensorBuffer のペアを持つマップを取得します。現在、サイズが 1 より大きい最初の軸でのマッピングのみを許可します。