estrutura DML_ONE_HOT_OPERATOR_DESC (directml.h)
Produz um tensor preenchido com valores codificados com um hot. Esse operador produz um tensor de saída em que, para todas as sequências em um eixo escolhido, todos menos um elemento nessa sequência é definido como OffValue e o elemento único restante é definido como OnValue. Uma sequência refere-se a um dos conjuntos de elementos que existem ao longo da dimensão Eixo do OutputTensor.
O local do OnValue para cada sequência e a escolha de OnValue/OffValue são determinados por IndicesTensor e ValuesTensor, respectivamente.
Sintaxe
struct DML_ONE_HOT_OPERATOR_DESC {
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *ValuesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Membros
IndicesTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém o índice em elementos do OnValue, para cada sequência ao longo do Eixo. Os índices são medidos em relação ao início de sua sequência (em oposição ao início do tensor). Por exemplo, um índice de 0 sempre se refere ao primeiro elemento para todas as sequências em um eixo.
Se um valor de índice para uma sequência exceder o número de elementos ao longo da dimensão Eixo no OutputTensor, esse valor de índice será ignorado e todos os elementos nessa sequência serão definidos como OffValue.
DML_FEATURE_LEVEL_3_0
A partir do , esse operador dá suporte a valores de índice negativos ao usar um tipo integral assinado com esse tensor. Índices negativos são interpretados como sendo relativos ao final da sequência. Por exemplo, um índice de -1 refere-se ao último elemento na sequência.
Esse tensor deve ter a contagem de dimensões e tamanhos iguais ao OutputTensor, exceto para a dimensão especificada pelo parâmetro Axis . O tamanho da dimensão Eixo deve ser 1. Por exemplo, se OutputTensor tiver tamanhos de {2,3,4,5}
e Axis for 1, os tamanhos de IndicesTensor deverão ser {2,1,4,5}
.
ValuesTensor
Tipo: const DML_TENSOR_DESC*
Esse tensor pode ter qualquer tamanho, desde que contenha pelo menos dois elementos. O 0º elemento desse tensor é interpretado como OffValue e o 1º elemento ao longo da dimensão de alteração mais rápida do tamanho >1 é interpretado como OnValue.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de saída para o qual gravar os resultados. Esse tensor deve ter a contagem de dimensões e tamanhos iguais ao IndicesTensor, exceto para a dimensão especificada pelo parâmetro Axis . O tamanho da dimensão Eixo neste tensor pode ter qualquer valor maior que 0.
Axis
Tipo: UINT
O índice da dimensão para produzir sequências codificadas com um foco. Esse valor deve ser menor que o DimensionCount do IndicesTensor.
Exemplos
Exemplo 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]]]]
Exemplo 2. Usando um eixo diferente
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]]]]
Exemplo 3. Usando valores de ativação/desativação diferentes
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]]]]
Exemplo 4. Índices negativos e fora dos limites
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]]]]
Comentários
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_2_0
.
Restrições do Tensor
- IndicesTensor, OutputTensor e ValuesTensor devem ter a mesma DimensionCount.
- OutputTensor e ValuesTensor devem ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_4_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
IndicesTensor | Entrada | 1 a 8 | INT64, INT32, UINT64, UINT32 |
ValuesTensor | Entrada | 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
IndicesTensor | Entrada | 1 a 8 | INT64, INT32, UINT64, UINT32 |
ValuesTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
IndicesTensor | Entrada | 4 | UINT32 |
ValuesTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
IndicesTensor | Entrada | 4 | UINT32 |
ValuesTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 2004 (10.0; Build 19041) |
Servidor mínimo com suporte | Windows Server, versão 2004 (10.0; Build 19041) |
Cabeçalho | directml.h |