阅读(4735)
赞(12)
TensorFlow:tf.space_to_batch函数
2018-01-26 10:28:04 更新
tf.space_to_batch 函数
space_to_batch(
input,
paddings,
block_size,
name=None
)
定义在:tensorflow/python/ops/array_ops.py.
参见指南:张量变换>分割和连接
用于 T 型的4维张量的 SpaceToBatch.
这是更一般的SpaceToBatchND的传统版本.
零填充,然后重新排列(permutes)的空间数据块成批.更具体地说,该操作会输出输入张量的副本,其中来自height维和width维的值将移至该batch维.在零填充之后,输入的height和width输入必须能被块大小整除.
函数参数
- input:一个Tensor,是4-D的,并且具有形状[batch, height, width, depth].
- paddings:一个Tensor,必须是以下类型之一:int32,int64.具有形状的非负整数的二维张量[2, 2].它在空间维度上用零指定输入的填充,如下所示:
零填充输入张量的有效空间维度将是:paddings = [[pad_top, pad_bottom], [pad_left, pad_right]]
attr block_size 必须大于1.它表示块大小.height_pad = pad_top + height + pad_bottom width_pad = pad_left + width + pad_right
- 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)对于以下输入的形状 [1, 2, 2, 1] 和 block_size 2:
输出张量具有形状[4, 1, 1, 1]和值:x = [[[[1], [2]], [[3], [4]]]]
(2)对于以下输入的shape [1, 2, 2, 3]和block_size 2:[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
输出张量具有形状[4, 1, 1, 3]和值:x = [[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]]
(3)对于以下输入的shape [1, 4, 4, 1]和block_size 2:[[[1, 2, 3]], [[4, 5, 6]], [[7, 8, 9]], [[10, 11, 12]]]
输出张量具有形状[4, 2, 2, 1]和值:x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]], [[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
(4)对于以下输入的形状[2, 2, 4, 1]和block_size 2:x = [[[[1], [3]], [[9], [11]]], [[[2], [4]], [[10], [12]]], [[[5], [7]], [[13], [15]]], [[[6], [8]], [[14], [16]]]]
输出张量具有形状[8, 1, 2, 1]和值:x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]]], [[[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
在其他方面, 此操作有助于将 atrous 卷积减为常规卷积.block_size:是一个大于等于2的int.name:操作的名称(可选).x = [[[[1], [3]]], [[[9], [11]]], [[[2], [4]]], [[[10], [12]]], [[[5], [7]]], [[[13], [15]]], [[[6], [8]]], [[[14], [16]]]]
函数返回
tf.space_to_batch函数返回一个与input具有相同的类型的Tensor.