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_0
Ab 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_0
eingefü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 |