Compartilhar via


DML_ACTIVATION_HARDMAX1_OPERATOR_DESC structure (directml.h)

Executa uma função hardmax em cada elemento de InputTensor, colocando o resultado no elemento correspondente de OutputTensor.

O operador calcula o hardmax (1 para o primeiro valor máximo ao longo dos eixos especificados e 0 para todos os outros valores) de cada elemento na entrada fornecida.

reducedTensor = ReduceArgMax(InputTensor, axes = Axes, axisDirection = DML_AXIS_DIRECTION_INCREASING)
broadcastedTensor = Broadcast the `reducedTensor` to `InputTensor`
for each coordinate in OutputTensor
    if broadcastedTensor[coordinate] == reducedIndexOf(coordinate)   // reducedIndexOf(coordinate) is the index of the coordinate within reduced axes `axes`.
        OutputTensor[coordinate] = 1
    else
        OutputTensor[coordinate] = 0
endfor

Em que ReduceArgMax(input = InputTensor, axis = Axes) é DML_REDUCE_OPERATOR com DML_REDUCE_FUNCTION_ARGMAX como uma função redutora.

Importante

Essa API está disponível como parte do pacote redistribuível autônomo DirectML (consulte Microsoft.AI.DirectML versão 1.9 e posterior. Confira também o histórico de versões do DirectML.

Sintaxe

struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* OutputTensor;
    UINT AxisCount;
    _Field_size_(AxisCount) const UINT* Axes;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

A entrada do tensor da qual fazer a leitura.

OutputTensor

Tipo: const DML_TENSOR_DESC*

O tensor de saída no qual gravar o resultado.

AxisCount

Tipo: UINT

O número de eixos a serem calculados reduz o hardmax. Esse campo determina o tamanho da matriz Eixos.

Axes

Tipo: _Field_size_(AxisCount) const UINT*

Os eixos ao longo dos quais reduzir hardmax. Os valores devem estar no intervalo [0, InputTensor.DimensionCount - 1].

Exemplos

Todos os exemplos a seguir usam esse mesmo tensor de entrada tridimensional:

InputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
    [
        [  12, 0],
        [-101, 11],
    ],
    [
        [  3,  234],
        [  0, -101],
    ]
]

Exemplo 1

AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
    [               // max element in {12, -101} is 12 and in {0, 11} is 11
        [1, 0],
        [0, 1],
    ],
    [               // max element in {3, 0} is 3 and in {234, -101} is 234
        [1, 1],
        [0, 0],
    ]
]

Exemplo 2

AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
    [               // max element in {12, 3} is 12, in {0, 234} is 234, in {-101, 0} is 0 and in {11, -101} is 11
        [1, 0],
        [0, 1],
    ],
    [
        [0, 1],
        [1, 0],
    ]
]

Exemplo 3

AxisCount: 2
Axes: {0, 2}
OutputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
    [               // max element in {12, 0, 3, 234} is 234 and in {-101, 11, 0, -101} is 11
        [0, 0],
        [0, 1],
    ],
    [
        [0, 1],
        [0, 0],
    ]
]

Comentários

Esse operador é equivalente a DML_ACTIVATION_HARDMAX_OPERATOR_DESC quando AxisCount == 1 e Axes == {DimensionCount - 1}.

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_5_1.

Restrições de tensor

InputTensor e OutputTensor devem ter os mesmos DataType, DimensionCount e Sizes.

Suporte a tensores

Tensor Tipo Contagens de dimensões compatíveis Tipos de dados com suporte
InputTensor Entrada 1 a 8 FLOAT32, FLOAT16
OutputTensor Saída 1 a 8 FLOAT32, FLOAT16

Requisitos

   
Cabeçalho directml.h

Confira também