Udostępnij przez


struktura DML_FOLD_OPERATOR_DESC (directml.h)

Łączy tablicę poprawek utworzonych z okna przesuwnego w dużą zawierającą tensor.

Rozważ wsadowy tensor wejściowy zawierający przesuwane bloki lokalne, np. poprawki obrazów, kształt (N,C×∏(WindowSizes),BlockCount), gdzie N jest wymiarem wsadowym, C×∏(WindowSizes) jest liczbą wartości w oknie (okno ma ∏(WindowSizes) lokalizacje przestrzenne, z których każda zawiera wektor C-channeled), a BlockCount jest całkowitą liczbą bloków. Ta operacja łączy te bloki lokalne w duży tensor wyjściowy kształtu (N,C,OutputSize[0], OutputSize[1],...), sumując nakładające się wartości. Argumenty muszą spełniać następujące wymagania:

BlocksPerDimension[d] = ( SpatialSize[d] + StartPadding[d] + EndPadding[d] - Dilations[d] * (WindowSizes[d] - 1) - 1 ) / stride[d] ) + 1

LiczbaBloków = ∏d BlokiNa Wymiar[d]

Gdzie:

  • <0 = d < LiczbaWymiarów

Parametr OutputSize (rozmiar elementu OutputTensor) opisuje kształt przestrzenny dużego obiektu zawierającego tensor bloków lokalnych przesuwanych.

Argumenty StartPadding, EndPadding, Strides i Dilations określają sposób pobierania bloków przesuwnych.

Ważne

Ten interfejs API jest dostępny w ramach autonomicznego pakietu redystrybucyjnego DirectML (zobacz Microsoft.AI.DirectML w wersji 1.15.1 lub nowszej. Zobacz również historię wersji języka DirectML.

Składnia

struct DML_FOLD_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* OutputTensor;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const UINT* WindowSizes;
    _Field_size_(DimensionCount) const UINT* Strides;
    _Field_size_(DimensionCount) const UINT* Dilations;
    _Field_size_(DimensionCount) const UINT* StartPadding;
    _Field_size_(DimensionCount) const UINT* EndPadding;
};

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.

DimensionCount

Typ: UINT

Wymiary przestrzenne elementu InputTensor. Element DimensionCount musi mieć wartość <= 6.

WindowSizes

Typ: _Field_size_(DimensionCount) const UINT*

Rozmiar okna przesuwanego. Rozmiar wyodrębnionej poprawki.

Strides

Typ: _Field_size_(DimensionCount) const UINT*

Krok okna przesuwanego (z wymiarami WindowSizes) w wymiarach wejściowych przestrzennych. Są one oddzielone od kroków tensorowych uwzględnionych w DML_TENSOR_DESC. Rozmiar kroku wyodrębnionych poprawek.

Dilations

Typ: _Field_size_(DimensionCount) const UINT*

Różnice w przesuwanym oknie (z wymiarami WindowSizes) w wymiarach wejściowych przestrzennych przez skalowanie przestrzeni między punktami jądra. Dylatacje wyodrębnionej poprawki.

StartPadding

Typ: _Field_size_(DimensionCount) const UINT*

Tablica zawierająca niejawne wypełnienie zerowe, które ma być stosowane na początku każdego wymiaru przestrzennego InputTensor. Rozpocznij dopełnianie tensoru źródłowego.

EndPadding

Typ: _Field_size_(DimensionCount) const UINT*

Tablica zawierająca niejawne wypełnienie zerowe, które ma być stosowane na końcu każdego wymiaru przestrzennego InputTensor. Dopełnienie końcowe tensoru źródłowego.

Przykłady

Przykład 1

Składana z 1 kanału.

InputTensor: (Sizes:{1, 9, 4}, DataType:FLOAT32)
[[[ 0.,  1.,  2.,  3.],
  [ 4.,  5.,  6.,  7.],
  [ 8.,  9., 10., 11.],
  [12., 13., 14., 15.],
  [16., 17., 18., 19.],
  [20., 21., 22., 23.],
  [24., 25., 26., 27.],
  [28., 29., 30., 31.],
  [32., 33., 34., 35.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[  0.,   5.,  13.,   9.],
   [ 14.,  38.,  54.,  32.],
   [ 38.,  86., 102.,  56.],
   [ 26.,  57.,  65.,  35.]]]]

Przykład 2

1-kanałowy, zwinięty zwinięty.

InputTensor: (Sizes:{1, 9, 8}, DataType:FLOAT32)
[[[ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.],
  [ 8.,  9., 10., 11., 12., 13., 14., 15.],
  [16., 17., 18., 19., 20., 21., 22., 23.],
  [24., 25., 26., 27., 28., 29., 30., 31.],
  [32., 33., 34., 35., 36., 37., 38., 39.],
  [40., 41., 42., 43., 44., 45., 46., 47.],
  [48., 49., 50., 51., 52., 53., 54., 55.],
  [56., 57., 58., 59., 60., 61., 62., 63.],
  [64., 65., 66., 67., 68., 69., 70., 71.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 26.,  70., 102.,  60.],
   [ 78., 183., 231., 129.],
   [ 84., 195., 243., 135.],
   [ 82., 182., 214., 116.]]]]

Przykład 3

2-kanałowy, zwinięty zwijany.

InputTensor: (Sizes:{1, 18, 8}, DataType:FLOAT32)
[[[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.],
  [  8.,   9.,  10.,  11.,  12.,  13.,  14.,  15.],
  [ 16.,  17.,  18.,  19.,  20.,  21.,  22.,  23.],
  [ 24.,  25.,  26.,  27.,  28.,  29.,  30.,  31.],
  [ 32.,  33.,  34.,  35.,  36.,  37.,  38.,  39.],
  [ 40.,  41.,  42.,  43.,  44.,  45.,  46.,  47.],
  [ 48.,  49.,  50.,  51.,  52.,  53.,  54.,  55.],
  [ 56.,  57.,  58.,  59.,  60.,  61.,  62.,  63.],
  [ 64.,  65.,  66.,  67.,  68.,  69.,  70.,  71.],
  [ 72.,  73.,  74.,  75.,  76.,  77.,  78.,  79.],
  [ 80.,  81.,  82.,  83.,  84.,  85.,  86.,  87.],
  [ 88.,  89.,  90.,  91.,  92.,  93.,  94.,  95.],
  [ 96.,  97.,  98.,  99., 100., 101., 102., 103.],
  [104., 105., 106., 107., 108., 109., 110., 111.],
  [112., 113., 114., 115., 116., 117., 118., 119.],
  [120., 121., 122., 123., 124., 125., 126., 127.],
  [128., 129., 130., 131., 132., 133., 134., 135.],
  [136., 137., 138., 139., 140., 141., 142., 143.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 2, 4, 4}, DataType:FLOAT32)
[[[[ 26.,  70., 102.,  60.],
   [ 78., 183., 231., 129.],
   [ 84., 195., 243., 135.],
   [ 82., 182., 214., 116.]],

  [[170., 358., 390., 204.],
   [294., 615., 663., 345.],
   [300., 627., 675., 351.],
   [226., 470., 502., 260.]]]]

Dostępność

Ten operator został wprowadzony w DML_FEATURE_LEVEL_6_4.

Ograniczenia dotyczące tensorów

Elementy InputTensor i OutputTensor muszą mieć ten sam parametr DimensionCount.

Obsługa biblioteki Tensor

Tensor Rodzaj Obsługiwane liczby wymiarów Obsługiwane typy danych
Tensor wejściowy Dane wejściowe Od 3 do 8
Tensor wyjściowy Wynik Od 3 do 8

Wymagania

   
Nagłówek directml.h