Condividi tramite


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