DML_ONE_HOT_OPERATOR_DESC struttura (directml.h)
Produce un tensore riempito con valori con codifica uno-frequente . Questo operatore produce un tensore di output in cui, per tutte le sequenze in un asse scelto, tutti gli elementi della sequenza vengono impostati su OffValue e l'elemento singolo rimanente è impostato su OnValue. Una sequenza fa riferimento a uno dei set di elementi presenti lungo la dimensione Assedell'OutputTensor.
La posizione di OnValue per ogni sequenza e la scelta di OnValueOffValue/ sono determinate rispettivamente da IndicesTensor e ValuesTensor.
Sintassi
struct DML_ONE_HOT_OPERATOR_DESC {
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *ValuesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Members
IndicesTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente l'indice negli elementi di OnValue, per ogni sequenza lungo l'asse. Gli indici vengono misurati rispetto all'inizio della loro sequenza (anziché all'inizio del tensore). Ad esempio, un indice di 0 fa sempre riferimento al primo elemento per tutte le sequenze in un asse.
Se un valore di indice per una sequenza supera il numero di elementi lungo la dimensione Asse in OutputTensor, tale valore di indice viene ignorato e tutti gli elementi in tale sequenza verranno impostati su OffValue.
A partire da DML_FEATURE_LEVEL_3_0
, questo operatore supporta valori di indice negativi quando si usa un tipo integrale firmato con questo tensore. Gli indici negativi vengono interpretati come relativi alla fine della sequenza. Ad esempio, un indice di -1 fa riferimento all'ultimo elemento della sequenza.
Questo tensore deve avere il conteggio delle dimensioni e le dimensioni uguali a OutputTensor, ad eccezione della dimensione specificata dal parametro Axis . Le dimensioni della dimensione Asse devono essere 1. Ad esempio, se outputTensor ha dimensioni di {2,3,4,5}
e Asse è 1, le dimensioni dell'indicesTensor devono essere {2,1,4,5}
.
ValuesTensor
Tipo: const DML_TENSOR_DESC*
Questo tensore può avere qualsiasi dimensione, purché contenga almeno due elementi. L'elemento 0 di questo tensore viene interpretato come OffValue e l'elemento 1° lungo la dimensione con modifica più rapida delle dimensioni >1 viene interpretata come OnValue.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output in cui scrivere i risultati. Questo tensore deve avere il numero di dimensioni e le dimensioni uguali all'IndicesTensor, ad eccezione della dimensione specificata dal parametro Axis . Le dimensioni della dimensione Asse in questo tensore possono avere un valore maggiore di 0.
Axis
Tipo: UINT
Indice della dimensione per produrre sequenze con codifica unisciva lungo. Questo valore deve essere minore di DimensionCount dell'indicesTensor.
Esempi
Esempio 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]]]]
Esempio 2. Uso di un asse diverso
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]]]]
Esempio 3. Uso di valori diversi su/off
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]]]]
Esempio 4. Indici negativi e non associati
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]]]]
Commenti
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_2_0
.
Vincoli tensor
- IndicisTensor, OutputTensor e ValuesTensor devono avere lo stesso DimensionCount.
- OutputTensor e ValuesTensor devono avere lo stesso Tipo di dati.
Supporto di Tensor
DML_FEATURE_LEVEL_4_1 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|
IndicesTensor | Input | da 1 a 8 | INT64, INT32, UINT64, UINT32 |
ValoriTensor | Input | da 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Output | da 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|
IndicesTensor | Input | da 1 a 8 | INT64, INT32, UINT64, UINT32 |
ValoriTensor | Input | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Output | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|
IndicesTensor | Input | 4 | UINT32 |
ValoriTensor | Input | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|
IndicesTensor | Input | 4 | UINT32 |
ValoriTensor | Input | 4 | FLOAT32, FLOAT16 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16 |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 versione 2004 (10.0; Build 19041) |
Server minimo supportato | Windows Server, versione 2004 (10.0; Build 19041) |
Intestazione | directml.h |