TensorFlow函数教程:tf.nn.space_to_batch
2019-02-12 18:05 更新
tf.nn.space_to_batch函数
别名:
- tf.nn.space_to_batch
- tf.space_to_batch
tf.nn.space_to_batch(
input,
paddings,
block_size,
name=None
)
定义在:tensorflow/python/ops/array_ops.py。
类型为T的4-D张量的SpaceToBatch。
这是更通用的SpaceToBatchND的遗留版本。
零填充然后将空间数据的块重新排列(置换)为批处理。更具体地说,该操作输出输入张量的副本,其中来自height和width维度的值被移动到batch维度。在零填充之后,输入的两个height和width必须可以被块大小整除。
参数:
- input:一个4-D Tensor,shape为[batch, height, width, depth]。
- paddings:一个Tensor。必须是以下类型之一:int32,int64。是shape为[2, 2]的非负整数的2-D张量。它在空间维度上用零指定输入的填充,如下所示:
paddings = [[pad_top, pad_bottom], [pad_left, pad_right]]
零填充输入张量的有效空间维度将是:
height_pad = pad_top + height + pad_bottom width_pad = pad_left + width + pad_right
attr block_size必须大于1。它表示块大小。
- height和width维度中大小为block_size x block size的非重叠块将重新排列到每个位置的批处理维度中。
- 输出张量的批处理是batch * block_size * block_size。
- height_pad和width_pad都必须可被block_size整除。
[batch*block_size*block_size, height_pad/block_size, width_pad/block_size, depth]
一些例子:
(1)对于以下shape为[1, 2, 2, 1]和block_size为2的输入:x = [[[[1], [2]], [[3], [4]]]]
输出张量具有shape [4, 1, 1, 1]和值:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
(2)对于以下shape为[1, 2, 2, 3]和block_size为2的输入:
x = [[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]]
输出张量具有shape [4, 1, 1, 3]和值:
[[[1, 2, 3]], [[4, 5, 6]], [[7, 8, 9]], [[10, 11, 12]]]
(3)对于以下shape为[1, 4, 4, 1]和block_size为2的输入:
x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]], [[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
输出张量具有shape [4, 2, 2, 1]和值:
x = [[[[1], [3]], [[9], [11]]], [[[2], [4]], [[10], [12]]], [[[5], [7]], [[13], [15]]], [[[6], [8]], [[14], [16]]]]
(4)对于以下shape为[2, 2, 4, 1]和block_size为2的输入:
x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]]], [[[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
输出张量具有shape[8, 1, 2, 1]和值:
x = [[[[1], [3]]], [[[9], [11]]], [[[2], [4]]], [[[10], [12]]], [[[5], [7]]], [[[13], [15]]], [[[6], [8]]], [[[14], [16]]]]
其中,该操作对于将atrous卷积减少为regular卷积是有用的。
- block_size:>= 2的int。
- name:操作的名称(可选)。
返回:
一个Tensor,与input具有相同的类型。