spaceToDepth

Rearrange spatial blocks of dlarray data along depth dimension

Description

example

Y = spaceToDepth(X,blockSize) rearranges spatial blocks of the formatted dlarray object, X, along the depth dimension. The blocks of data have size blockSize.

Given an input feature map of size [H W C] and blocks of size [height width], the output feature map size is [floor(H/height) floor(W/width) C*height*width].

This function requires Deep Learning Toolbox™.

example

Y = spaceToDepth(X,blockSize,'DataFormat',dataFormat) rearranges spatial blocks of the unformatted dlarray object, X, along the depth dimension. dataFormat specifies the dimension labels.

Examples

collapse all

Create a numeric array with three channels that simulates a 4-by-4 RGB image.

X = reshape(1:48,4,4,3);

Create a dlarray object that contains the numeric data, specifying the format of the data as 'SSC' (spatial, spatial, channel).

X = dlarray(X,'SSC')
X =
4(S) x 4(S) x 3(C) dlarray

(:,:,1) =

1     5     9    13
2     6    10    14
3     7    11    15
4     8    12    16

(:,:,2) =

17    21    25    29
18    22    26    30
19    23    27    31
20    24    28    32

(:,:,3) =

33    37    41    45
34    38    42    46
35    39    43    47
36    40    44    48

Specify a 2-by-2 block size for reordering input activations.

blockSize = 2;

Rearrange blocks of data from the spatial dimension to the depth dimension.

Z = spaceToDepth(X,blockSize)
Z =
2(S) x 2(S) x 12(C) dlarray

(:,:,1) =

1     9
3    11

(:,:,2) =

17    25
19    27

(:,:,3) =

33    41
35    43

(:,:,4) =

5    13
7    15

(:,:,5) =

21    29
23    31

(:,:,6) =

37    45
39    47

(:,:,7) =

2    10
4    12

(:,:,8) =

18    26
20    28

(:,:,9) =

34    42
36    44

(:,:,10) =

6    14
8    16

(:,:,11) =

22    30
24    32

(:,:,12) =

38    46
40    48

2(S) x 2(S) x 12(C) dlarray

Create a numeric array with three channels that simulates a 4-by-4 RGB image.

X = reshape(1:48,4,4,3);

Create an unformatted dlarray object that contains the numeric data.

dlX = dlarray(X);

Specify a 2-by-2 block size for reordering input activations.

blockSize = 2;

Rearrange blocks of data from the spatial dimension to the depth dimension. Specify the format of the input data as "SSC".

dlZ = spaceToDepth(dlX,blockSize,"DataFormat","SSC");

Compare the dimensions of the original and rearranged data.

whos dlX dlZ
Name      Size              Bytes  Class      Attributes

dlX       4x4x3               384  dlarray
dlZ       2x2x12              384  dlarray

Input Arguments

collapse all

Deep learning data to rearrange, specified as a dlarray (Deep Learning Toolbox) object.

Block size to reorder the input activation, specified as a positive integer or vector of two positive integers of the form [h w], where h is the height and w is the width. When you specify blockSize as a scalar, the function uses the same value for both dimensions.

Example: [2 4] specifies blocks of height 2 and width 4.

Example: 32 specifies blocks of height and width 32.

Dimension labels when the input deep learning data X is unlabeled, specified as a string scalar or character vector. The number of labels must match the number of dimensions of the input data, X. Each character in dataFormat must be one of these labels:

• S — Spatial

• C — Channel

• B — Batch observations

The "T" (time or sequence) and "U" (unspecified) labels are not supported. Do not specify the dataFormat argument when the input deep learning data is a formatted dlarray object.

Example: 'SSC' indicates the array has two spatial dimensions and one channel dimension, appropriate for 2-D RGB image data.

Data Types: char | string

Output Arguments

collapse all

Rearranged deep learning data, returned as a dlarray (Deep Learning Toolbox) object.