SpaceToBatch for N-D tensors of type T.
Aliases:
tf.compat.v2.nn.space_to_batch
tf.compat.v2.space_to_batch
tf.nn.space_to_batch
tf.space_to_batch(
input,
block_shape,
paddings,
name=None
)
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 (0) 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
: ATensor
. N-D with shapeinput
_shape = [batch] + spatial_shape + remaining_shape, where spatial_shape hasM
dimensions.block_shape
: ATensor
.M
ust be one of the following types:int32
,int64
. 1-D with shape[M]
, all values must be >= 1.paddings
: ATensor
.M
ust be one of the followi
ng types:int32
,int64
. 2-D wi
th shape[M, 2]
, all values must be >= 0.paddings
[i
] = [pad_start, pad_end] speci
fi
es the paddi
ng forinput
di
mensi
oni + 1
, whi
ch corresponds to spati
al di
mensi
oni
. Iti
s requi
red thatblock_shape
[i
] di
vi
desinput
_shape[i + 1
] + pad_start + pad_end. Thi
s operati
oni
s equi
valent to the followi
ng steps: Zero-pad the start and end of di
mensi
ons[1, ..., M]
of theinput
accordi
ng topaddings
to producepadded
of shapepadded
_shape. Reshapepadded
toreshaped_padded
of shape: [batch] + [padded
_shape[1] /block_shape
[0],block_shape
[0], ...,padded
_shape[M]
/block_shape
[M
-1],block_shape
[M
-1]] + remai
ni
ng_shape Permute di
mensi
ons ofreshaped_padded
to producepermuted_reshaped_padded
of shape:block_shape
+ [batch] + [padded
_shape[1] /block_shape
[0], ...,padded
_shape[M]
/block_shape
[M
-1]] + remai
ni
ng_shape Reshapepermuted_reshaped_padded
to flattenblock_shape
i
nto the batch di
mensi
on, produci
ng an output tensor of shape: [batch * prod(block_shape
)] + [padded
_shape[1] /block_shape
[0], ...,padded
_shape[M]
/block_shape
[M
-1]] + remai
ni
ng_shape Some examples: (1) For the followi
nginput
of shape[1, 2, 2, 1]
,block_shape
= [2, 2], andpaddings
= [[0, 0], [0, 0]]:- Zero-pad the start and end of d
i
mensi
ons[1, ..., M]
of theinput
accordi
ng topaddings
to producepadded
of shapepadded
_shape. - Reshape
padded
toreshaped_padded
of shape: [batch] + [padded
_shape[1] /block_shape
[0],block_shape
[0], ...,padded
_shape[M]
/block_shape
[M
-1],block_shape
[M
-1]] + remai
ni
ng_shape - Permute d
i
mensi
ons ofreshaped_padded
to producepermuted_reshaped_padded
of shape:block_shape
+ [batch] + [padded
_shape[1] /block_shape
[0], ...,padded
_shape[M]
/block_shape
[M
-1]] + remai
ni
ng_shape - Reshape
permuted_reshaped_padded
to flattenblock_shape
i
nto the batch di
mensi
on, produci
ng an output tensor of shape: [batch * prod(block_shape
)] + [padded
_shape[1] /block_shape
[0], ...,padded
_shape[M]
/block_shape
[M
-1]] + remai
ni
ng_shape The output tensor has shape[4, 1, 1, 1]
and value: (2) For the following input of shape[1, 2, 2, 3]
,block_shape = [2, 2]
, andpaddings = [[0, 0], [0, 0]]
: The output tensor has shape[4, 1, 1, 3]
and value: (3) For the following input of shape[1, 4, 4, 1]
,block_shape = [2, 2]
, andpaddings = [[0, 0], [0, 0]]
: The output tensor has shape[4, 2, 2, 1]
and value: (4) For the following input of shape[2, 2, 4, 1]
, block_shape =[2, 2]
, and paddings =[[0, 0], [2, 0]]
: The output tensor has shape[8, 1, 3, 1]
and value: Among others, this operation is useful for reducing atrous convolution into regular convolution. *name
: Aname
for the operation (optional).
Returns:
A Tensor
. Has the same type as input
.