Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Combina una matrice di patch formate da una finestra scorrevole in un tensore contenitore di grandi dimensioni.
Si consideri un tensore di input in batch contenente blocchi locali scorrevoli, ad esempio patch di immagini, forma (N,C×∏(WindowSizes),BlockCount), dove N è dimensione batch, C×∏(WindowSizes) è il numero totale di blocchi all'interno di una finestra (una finestra ha posizioni spaziali ∏(WindowSizes) ognuna contenente un vettore con canale C) e BlockCount è il numero totale di blocchi. Questa operazione combina questi blocchi locali nel tensore di output di grandi dimensioni della forma (N,C,OutputSize[0],OutputSize[1],...) sommando i valori sovrapposti. Gli argomenti devono soddisfare:
BlocksPerDimension[d] = ( SpatialSize[d] + StartPadding[d] + EndPadding[d] - Dilations[d] * (WindowSizes[d] - 1) - 1 ) / stride[d] ) + 1
BlockCount = ∏d BlocksPerDimension[d]
Dove:
- <0 = d < Conteggio Dimensione
OutputSize (dimensioni di OutputTensor) descrive la forma spaziale del tensore di grandi dimensioni dei blocchi locali scorrevoli.
Gli argomenti StartPadding, EndPadding, Strides e Dilations specificano come vengono recuperati i blocchi scorrevoli.
Importante
Questa API è disponibile come parte del pacchetto ridistribuibile autonomo DirectML (vedere Microsoft.AI.DirectML versione 1.15.1 e successive. Vedere anche cronologia delle versioni di DirectML.
Sintassi
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;
};
Membri
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di input da cui leggere.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output in cui scrivere i risultati.
DimensionCount
Tipo: UINT
Dimensioni spaziali di InputTensor. DimensionCount deve essere <= 6.
WindowSizes
Tipo: _Field_size_(DimensionCount) const UINT*
Dimensione della finestra scorrevole. Dimensioni della patch estratta.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
Stride della finestra scorrevole (con dimensioni WindowSizes) nelle dimensioni spaziali di input. Sono separati dai progressi del tensore inclusi in DML_TENSOR_DESC. Dimensioni delle patch estratte.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
Le dilation della finestra scorrevole (con dimensioni WindowSizes) nelle dimensioni spaziali di input, ridimensionando lo spazio tra i punti del kernel. Dilation della patch estratta.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente la quantità di spaziatura interna implicita da applicare all'inizio di ogni dimensione spaziale di InputTensor. Iniziare la spaziatura interna del tensore di origine.
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente la quantità di spaziatura interna implicita zero da applicare alla fine di ogni dimensione spaziale di InputTensor. Riempimento finale del tensore di origine.
Esempi
Esempio 1
Una piega a 1 canale.
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.]]]]
Esempio 2
Una piega interna a 1 canale.
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.]]]]
Esempio 3
Una piega interna a 2 canali.
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.]]]]
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_6_4.
Vincoli tensor
InputTensor e OutputTensor devono avere lo stesso DimensionCount.
Supporto tensor
| Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
|---|---|---|---|
| InputTensor | Inserimento | da 3 a 8 | |
| OutputTensor | Risultato | da 3 a 8 |
Requisiti
| Intestazione | directml.h |