当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.raw_ops.SpaceToDepth用法及代码示例


T 类型张量的 SpaceToDepth。

用法

tf.raw_ops.SpaceToDepth(
    input, block_size, data_format='NHWC', name=None
)

参数

  • input 一个Tensor
  • block_size int>= 2 。空间块的大小。
  • data_format 一个可选的 string 来自: "NHWC", "NCHW", "NCHW_VECT_C" 。默认为 "NHWC"
  • name 操作的名称(可选)。

返回

  • 一个Tensor。具有与 input 相同的类型。

将空间数据块重新排列到深度。更具体地说,此操作输出输入张量的副本,其中来自 heightwidth 维度的值被移动到 depth 维度。 attr block_size 表示输入块大小。

  • 大小为block_size x block size 的非重叠块在每个位置重新排列为深度。
  • 输出张量的深度是 block_size * block_size * input_depth
  • 输入的每个块内的 Y、X 坐标成为输出通道索引的高阶分量。
  • 输入张量的高度和宽度必须能被block_size整除。

data_format attr 使用以下选项指定输入和输出张量的布局: "NHWC": [ batch, height, width, channels ] "NCHW": [ batch, channels, height, width ] "NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]

将操作视为转换 6-D 张量很有用。例如对于data_format = NHWC,输入张量中的每个元素可以通过 6 个坐标指定,按内存布局重要性递减顺序排列为:n,oY,bY,oX,bX,iC(其中 n=batch index,oX,oY 表示输出图像内的 X 或 Y 坐标,bX,bY 表示输入块内的坐标,iC 表示输入通道)。输出将转置为以下布局:n,oY,oX,bY,bX,iC

此操作对于调整卷积之间的激活大小(但保留所有数据)很有用,例如而不是池化。它对于训练纯卷积模型也很有用。

例如,给定形状为 [1, 2, 2, 1] 的输入,data_format = "NHWC" 和 block_size = 2:

x = [[[[1], [2]],
      [[3], [4]]]]

此操作将输出形状为 [1, 1, 1, 4] 的张量:

[[[[1, 2, 3, 4]]]]

这里,输入有一个批次 1,每个批次元素的形状为 [2, 2, 1] ,对应的输出将有一个元素(即宽度和高度均为 1),并且深度为 4 个通道(1 * block_size * block_size)。输出元素形状为 [1, 1, 4]

对于深度较大的输入张量,这里的形状为 [1, 2, 2, 3] ,例如

x = [[[[1, 2, 3], [4, 5, 6]],
      [[7, 8, 9], [10, 11, 12]]]]

对于block_size of 2,此操作将返回以下形状为 [1, 1, 1, 12] 的张量

[[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]

同样,对于以下形状 [1 4 4 1] 的输入,块大小为 2:

x = [[[[1],   [2],  [5],  [6]],
      [[3],   [4],  [7],  [8]],
      [[9],  [10], [13],  [14]],
      [[11], [12], [15],  [16]]]]

运算符将返回以下形状的张量 [1 2 2 4]

x = [[[[1, 2, 3, 4],
       [5, 6, 7, 8]],
      [[9, 10, 11, 12],
       [13, 14, 15, 16]]]]

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.raw_ops.SpaceToDepth。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。