function depthToSpace_(x, blockSize, dataFormat = "NHWC") {
    const $x = (0, _tensorUtilEnv.convertToTensor)(x, "x", "depthToSpace", "float32");
    const inputHeight = dataFormat === "NHWC" ? $x.shape[1] : $x.shape[2];
    const inputWidth = dataFormat === "NHWC" ? $x.shape[2] : $x.shape[3];
    const inputDepth = dataFormat === "NHWC" ? $x.shape[3] : $x.shape[1];
    _util.assert(blockSize > 1, ()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);
    _util.assert(inputHeight * blockSize >= 0, ()=>`Negative dimension size caused by overflow when multiplying
    ${inputHeight} and ${blockSize}  for depthToSpace with input shape
    ${$x.shape}`);
    _util.assert(inputWidth * blockSize >= 0, ()=>`Negative dimension size caused by overflow when multiplying
    ${inputWidth} and ${blockSize} for depthToSpace with input shape
        ${$x.shape}`);
    _util.assert(inputDepth % (blockSize * blockSize) === 0, ()=>`Dimension size must be evenly divisible by ${blockSize * blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);
    const inputs = {
        x: $x
    };
    const attrs = {
        blockSize,
        dataFormat
    };
    return (0, _engine.ENGINE).runKernel((0, _kernelNames.DepthToSpace), inputs, attrs);
}
Rearranges data from depth into blocks of spatial data. More specifically,
this op outputs a copy of the input tensor where values from the `depth`
dimension are moved in spatial blocks to the `height` and `width` dimensions.
The attr `blockSize` indicates the input block size and how the data is
moved.

 - Chunks of data of size `blockSize * blockSize` from depth are rearranged
into non-overlapping blocks of size `blockSize x blockSize`

 - The width the output tensor is `inputWidth * blockSize`, whereas the
height is `inputHeight * blockSize`

 - The Y, X coordinates within each block of the output image are determined
by the high order component of the input channel index

 - The depth of the input tensor must be divisible by `blockSize *
blockSize`

The `dataFormat` attr specifies the layout of the input and output tensors
with the following options: "NHWC": [ `batch, height, width, channels` ]
"NCHW": [ `batch, channels, height, width` ]

```js
const x = tf.tensor4d([1, 2, 3, 4], [1, 1, 1, 4]);
const blockSize = 2;
const dataFormat = "NHWC";

tf.depthToSpace(x, blockSize, dataFormat).print();
```

@param x The input tensor of rank 4
@param blockSIze  An `int` that is `>= 2`. The size of the spatial block
@param dataFormat An optional string from: "NHWC", "NCHW". Defaults to "NHWC"

@doc {heading: 'Tensors', subheading: 'Transformations'}