Freigeben über


DML_ONE_HOT_OPERATOR_DESC-Struktur (directml.h)

Erzeugt einen Tensor, der mit 1-Hot-codierten Werten gefüllt ist. Dieser Operator erzeugt einen Ausgabe tensor, bei dem für alle Sequenzen in einer ausgewählten Achse alle Elemente dieser Sequenz mit Ausnahme eines Elements auf OffValue und das verbleibende einzelne Element auf OnValue festgelegt ist. Eine Sequenz bezieht sich auf einen der Elemente, die entlang der Achsendimension des OutputTensor vorhanden sind.

Die Position des OnValue für jede Sequenz und die Auswahl von OnValue/OffValue werden vom IndicesTensor bzw. ValuesTensor bestimmt.

Syntax

struct DML_ONE_HOT_OPERATOR_DESC {
  const DML_TENSOR_DESC *IndicesTensor;
  const DML_TENSOR_DESC *ValuesTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

Member

IndicesTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der den Index in Elementen des OnValue für jede Sequenz entlang der Achse enthält. Indizes werden relativ zum Beginn ihrer Sequenz (im Gegensatz zum Beginn des Tensors) gemessen. Beispielsweise bezieht sich ein Index von 0 immer auf das erste Element für alle Sequenzen in einer Achse.

Wenn ein Indexwert für eine Sequenz die Anzahl der Elemente entlang der Axis-Dimension im OutputTensor überschreitet, wird dieser Indexwert ignoriert, und alle Elemente in dieser Sequenz werden auf OffValue festgelegt.

DML_FEATURE_LEVEL_3_0Ab unterstützt dieser Operator negative Indexwerte, wenn ein signierter integraler Typ mit diesem Tensor verwendet wird. Negative Indizes werden als relativ zum Ende der Sequenz interpretiert. Ein Index von -1 verweist beispielsweise auf das letzte Element in der Sequenz.

Dieser Tensor muss die Dimensionsanzahl und Größen aufweisen, die dem OutputTensor entsprechen, mit Ausnahme der vom Axis-Parameter angegebenen Dimension. Die Größe der Achsendimension muss 1 sein. Wenn der OutputTensor beispielsweise die Größen und {2,3,4,5}Achse 1 aufweist, müssen die Größen des IndicesTensor sein {2,1,4,5}.

ValuesTensor

Typ: const DML_TENSOR_DESC*

Dieser Tensor kann eine beliebige Größe aufweisen, solange er mindestens zwei Elemente enthält. Das 0. Element dieses Tensors wird als OffValue interpretiert, und das 1. Element entlang der sich am schnellsten ändernden Dimension von Größe >1 wird als OnValue interpretiert.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe tensor, in den die Ergebnisse geschrieben werden sollen. Dieser Tensor muss die Dimensionsanzahl und Größen aufweisen, die dem IndicesTensor entsprechen, mit Ausnahme der durch den Axis-Parameter angegebenen Dimension. Die Größe der Achsendimension in diesem Tensor kann einen Beliebigen Wert größer als 0 aufweisen.

Axis

Typ: UINT

Der Index der Dimension zum Erzeugen von ein-Hot-codierten Sequenzen. Dieser Wert muss kleiner als der DimensionCount des IndicesTensor sein.

Beispiele

Beispiel 1

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 0],    // The one-hot encoding is formed across the rows
   [0, 0, 0, 1],
   [0, 0, 1, 0]]]]

Beispiel 2: Verwenden einer anderen Achse

IndicesTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[0, 2, 1, 0]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 2

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 1],    // The one-hot encoding is formed across the columns
   [0, 0, 1, 0],
   [0, 1, 0, 0]]]]

Beispiel 3: Verwenden unterschiedlicher Ein/Aus-Werte

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,3,1}, DataType:FLOAT32)
[[[[4],    // off value
   [2],    // on value
   [9]]]] // unused

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 4, 4, 4],
   [4, 4, 4, 2],
   [4, 4, 2, 4]]]]

Beispiel 4. Negative und out-of-bounds-Indizes

IndicesTensor: (Sizes:{1,1,3,1}, DataType:INT32)
[[[[ -3],
   [100],
   [  3]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 1, 0, 0],    // negative indices count from the end
   [0, 0, 0, 0],    // out-of-bounds indices are ignored; all elements are set to OffValue
   [0, 0, 0, 1]]]]

Hinweise

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_0eingeführt.

Tensoreinschränkungen

  • IndicesTensor, OutputTensor und ValuesTensor müssen über dieselbe DimensionCount verfügen.
  • OutputTensor und ValuesTensor müssen denselben DataType aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
IndizesTensor Eingabe 1 bis 8 INT64, INT32, UINT64, UINT32
ValuesTensor Eingabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Ausgabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
IndizesTensor Eingabe 1 bis 8 INT64, INT32, UINT64, UINT32
ValuesTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
IndizesTensor Eingabe 4 UINT32
ValuesTensor Eingabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Ausgabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
IndizesTensor Eingabe 4 UINT32
ValuesTensor Eingabe 4 FLOAT32, FLOAT16
OutputTensor Ausgabe 4 FLOAT32, FLOAT16

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 2004 (10.0; Build 19041)
Unterstützte Mindestversion (Server) Windows Server, Version 2004 (10.0; Build 19041)
Kopfzeile directml.h