spaceToBatchND function

VARP spaceToBatchND(
  1. VARP input,
  2. VARP blockShape,
  3. VARP paddings
)

This operation divides "spatial" dimensions 1, ..., M of the input into a grid of blocks of shape block_shape, and interleaves these blocks with the "batch" dimension such that in the output, the spatial dimensions 1, ..., M correspond to the position within the grid, and the batch dimension combines both the position within a spatial block and the original batch position.

Prior to division into blocks, the spatial dimensions of the input are optionally zero padded according to paddings.

See below for a precise description.

Args:

  • input: A variable. must be 4-D with NC4HW4 format. N-D with shape input_shape = batch + spatial_shape + remaining_shape, where spatial_shape has M dimensions.
  • block_shape: A variable. Must be one of the following types: int32, int64. 1-D with shape M, all values must be >= 1.
  • paddings: A variable. Must be one of the following types: int32, int64. 2-D with shape M, 2, all values must be >= 0. paddingsi = pad_start, pad_end specifies the padding for input dimension i + 1, which corresponds to spatial dimension i. It is required that block_shapei divides input_shapei + 1 + pad_start + pad_end.

Returns:

  • A variable. Has the same type as input.

Implementation

VARP spaceToBatchND(VARP input, VARP blockShape, VARP paddings) =>
    VARP.fromPointer(C.mnn_expr_SpaceToBatchND(input.ptr, blockShape.ptr, paddings.ptr));