Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wykonuje funkcję hardmax dla każdego elementu InputTensor, umieszczając wynik w odpowiednim elemecie OutputTensor.
Operator oblicza wartość hardmax (1 dla pierwszej maksymalnej wartości wzdłuż określonych osi i 0 dla wszystkich innych wartości) każdego elementu w danym wejściu.
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
Gdzie funkcja ReduceArgMax(input = InputTensor, oś = Osie) jest DML_REDUCE_OPERATOR z DML_REDUCE_FUNCTION_ARGMAX jako funkcja redukcji.
Ważne
Ten interfejs API jest dostępny w ramach autonomicznego pakietu redystrybucyjnego DirectML (zobacz Microsoft.AI.DirectML w wersji 1.9 lub nowszej. Zobacz również historię wersji języka DirectML.
Składnia
struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
UINT AxisCount;
_Field_size_(AxisCount) const UINT* Axes;
};
Członkowie
InputTensor
Typ: const DML_TENSOR_DESC*
Tensor wejściowy do odczytu.
OutputTensor
Typ: const DML_TENSOR_DESC*
Tensor wyjściowy do zapisania wyników.
AxisCount
Typ: UINT
Liczba osi do obliczenia redukcji hardmax. To pole określa rozmiar tablicy Osi.
Axes
Typ: _Field_size_(AxisCount) const UINT*
Osie, wzdłuż których można zmniejszyć hardmax. Wartości muszą znajdować się w zakresie [0, InputTensor.DimensionCount - 1].
Przykłady
W poniższych przykładach wszystkie używają tego samego ten sam ten trójwymiarowy tensor wejściowy:
InputTensor: (Sizes:{2, 2, 2}, DataType:FLOAT32)
[
[
[ 12, 0],
[-101, 11],
],
[
[ 3, 234],
[ 0, -101],
]
]
Przykład 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],
]
]
Przykład 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],
]
]
Przykład 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],
]
]
Uwagi
Ten operator jest odpowiednikiem DML_ACTIVATION_HARDMAX_OPERATOR_DESC , gdy AxisCount == 1 i osie == {DimensionCount - 1}.
Dostępność
Ten operator został wprowadzony w DML_FEATURE_LEVEL_5_1.
Ograniczenia dotyczące tensorów
Klasy InputTensor i OutputTensor muszą mieć te same wartości DataType, DimensionCount i Size.
Obsługa biblioteki Tensor
| Tensor | Rodzaj | Obsługiwane liczby wymiarów | Obsługiwane typy danych |
|---|---|---|---|
| Tensor wejściowy | Dane wejściowe | Od 1 do 8 | FLOAT32, FLOAT16 |
| Tensor wyjściowy | Wynik | Od 1 do 8 | FLOAT32, FLOAT16 |
Wymagania
| Nagłówek | directml.h |