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


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


N-D T 类型张量的 BatchToSpace。

用法

tf.raw_ops.BatchToSpaceND(
    input, block_shape, crops, name=None
)

参数

  • input 一个Tensor。 N-D 形状为 input_shape = [batch] + spatial_shape + remaining_shape ,其中 spatial_shape 具有 M 维。
  • block_shape 一个Tensor。必须是以下类型之一:int32 , int64。形状为 [M] 的一维,所有值必须 >= 1。
  • crops A Tensor.必须是以下类型之一:int32,int64.二维与形状[M, 2],所有值必须 >= 0。crops[i] = [crop_start, crop_end]指定从输入维度裁剪的数量i + 1, 对应于空间维度i.要求crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1].

    此操作等效于以下步骤:

    1. input 重塑为 reshaped 的形状:[block_shape[0], ..., block_shape[M-1], batch /prod(block_shape), input_shape[1], ..., input_shape[N-1] ]

    2. 置换reshaped 的尺寸以产生形状为[batch /prod(block_shape) 的permuted

      input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],

      输入形状[M+1], ..., 输入形状[N-1]]

    3. 重塑 permuted 以产生形状为 [batch /prod(block_shape) 的 reshaped_permuted

      input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],

      输入形状[M+1], ..., 输入形状[N-1]]

    4. 根据crops裁剪reshaped_permuted的维度[1, ..., M]的开始和结束以产生shape的输出:[batch /prod(block_shape),

      input_shape[1] * block_shape[0] - 裁剪[0,0] - 裁剪[0,1], ..., input_shape[M] * block_shape[M-1] - 裁剪[M-1,0] - 裁剪[M-1,1],

      输入形状[M+1], ..., 输入形状[N-1]]

    一些例子:

    (1) 对于以下形状 [4, 1, 1, 1] , block_shape = [2, 2]crops = [[0, 0], [0, 0]] 的输入:

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

    输出张量的形状为 [1, 2, 2, 1] 和值:

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

    (2) 对于以下形状 [4, 1, 1, 3] , block_shape = [2, 2]crops = [[0, 0], [0, 0]] 的输入:

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

    输出张量的形状为 [1, 2, 2, 3] 和值:

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

    (3) 对于以下形状 [4, 2, 2, 1] , block_shape = [2, 2]crops = [[0, 0], [0, 0]] 的输入:

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

    输出张量的形状为 [1, 4, 4, 1] 和值:

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

    (4) 对于以下形状 [8, 1, 3, 1] , block_shape = [2, 2]crops = [[0, 0], [2, 0]] 的输入:

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

    输出张量的形状为 [2, 2, 4, 1] 和值:

    x = [[[[1],   [2],  [3],  [4]],
          [[5],   [6],  [7],  [8]]],
         [[[9],  [10], [11],  [12]],
          [[13], [14], [15],  [16]]]]
  • name 操作的名称(可选)。

返回

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

此操作将 "batch" 维度 0 重塑为形状 block_shape + [batch]M + 1 维度,将这些块交错回到由空间维度 [1, ..., M] 定义的网格中,以获得与输入具有相同等级的结果。然后根据crops 选择性地裁剪此中间结果的空间维度以生成输出。这与 SpaceToBatch 正好相反。请参阅下面的详细说明。

相关用法


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