Freigeben über


DML_FOLD_OPERATOR_DESC Struktur (directml.h)

Kombiniert ein Array von Patches, die aus einem Gleitfenster in einen großen mit Tensor gebildet werden.

Erwägen Sie einen Batcheingabe-Tensor, der lokale Blöcke enthält, z. B. Patches von Bildern, von Shape (N,C×∏(WindowSizes),BlockCount), wobei N batchdimensioniert ist, C×∏(WindowSizes) die Anzahl der Werte innerhalb eines Fensters (ein Fenster hat ∏(WindowSizes) räumliche Speicherorte, die jeweils einen C-kanalierten Vektor enthalten), und BlockCount ist die Gesamtanzahl der Blöcke. Dieser Vorgang kombiniert diese lokalen Blöcke in den großen Ausgabe-Tensor von Shape (N,C,OutputSize[0],OutputSize[1],...), indem die überlappenden Werte addiert werden. Die Argumente müssen erfüllen:

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

BlockAnzahl = ∏d BlöckePerDimension[d]

Ort:

  • <0 = d < DimensionAnzahl

Die OutputSize -Größe (die Größe des OutputTensor) beschreibt die räumliche Form des großen enthaltenden Tensors der gleitenden lokalen Blöcke.

Die Argumente StartPadding, EndPadding, Strides und Dilations geben an, wie die Schiebeblöcke abgerufen werden.

Von Bedeutung

Diese API ist als Teil des eigenständigen redistributable-Pakets von DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.15.1 und höher). Siehe auch den DirectML-Versionsverlauf.

Syntax

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;
};

Elemente

InputTensor

Typ: const DML_TENSOR_DESC*

Der Eingabe-Tensor, aus dem gelesen werden soll.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe-Tensor, in den die Ergebnisse geschrieben werden sollen.

DimensionCount

Typ: UINT

Die räumlichen Dimensionen von InputTensor. DimensionCount muss = 6 sein <.

WindowSizes

Typ: _Field_size_(DimensionCount) const UINT*

Die Größe des gleitenden Fensters. Größe des extrahierten Patches.

Strides

Typ: _Field_size_(DimensionCount) const UINT*

Die Stride des gleitenden Fensters (mit Dimensionen WindowSizes) in den räumlichen Eingabedimensionen. Sie sind von den Tensorschritten getrennt, die in DML_TENSOR_DESC enthalten sind. Schrittgröße der extrahierten Patches.

Dilations

Typ: _Field_size_(DimensionCount) const UINT*

Die Dilationen des Gleitfensters (mit Dimensionen WindowSizes) in den räumlichen Eingabedimensionen, indem der Abstand zwischen den Kernelpunkten skaliert wird. Dilationen des extrahierten Patches.

StartPadding

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das die Menge der impliziten Nullabstand enthält, die am Anfang jeder räumlichen Dimension von InputTensor angewendet werden soll. Beginnen Sie den Abstand des Quell-Tensors.

EndPadding

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das den impliziten Nullabstand enthält, der am Ende jeder räumlichen Dimension von InputTensor angewendet werden soll. Beenden des Abstands des Quell-Tensors.

Beispiele

Beispiel 1

Eine 1-Kanal-Faltung.

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.]]]]

Beispiel 2

Eine 1-Kanal-, gepolsterte Faltung.

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.]]]]

Beispiel 3

Eine 2-Kanal-, gepolsterte Faltung.

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.]]]]

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_6_4 eingeführt.

Tensoreinschränkungen

InputTensor und OutputTensor müssen denselben DimensionCount haben.

Tensorunterstützung

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 3 bis 8
AusgangTensor Ausgabe 3 bis 8

Anforderungen

   
Kopfball directml.h