當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.batch_to_space用法及代碼示例


N-D T 類型張量的 BatchToSpace。

用法

tf.batch_to_space(
    input, block_shape, crops, name=None
)

參數

  • input 具有形狀 input_shape = [batch] + spatial_shape + remaining_shape 的 N-D Tensor ,其中 spatial_shape 具有 M 維。
  • block_shape 形狀為 [M] 的一維 Tensor。必須是以下類型之一:int32 , int64。所有值都必須 >= 1。為了與 TF 1.0 向後兼容,此參數可能是 int,在這種情況下,它會轉換為 numpy.array([block_shape, block_shape], dtype=numpy.int64)
  • crops 二維Tensor有形狀[M, 2].必須是以下類型之一:int32,int64.所有值必須 >= 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 of shape:[block_shape[0], ..., block_shape[M-1], batch /prod(block_shape), input_shape[1], ..., input_shape[N-1] ]
    2. 置換 reshaped 的尺寸以產生形狀為 [batch /prod(block_shape), input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1], input_shape[M] 的 permuted +1], ..., input_shape[N-1]]
    3. 重塑 permuted 以生成形狀為 reshaped_permuted [batch /prod(block_shape), input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1], input_shape[M+1 ], ..., input_shape[N-1]]
    4. 根據crops裁剪reshaped_permuted的維度[1, ..., M]的開始和結束以產生shape的輸出:[batch /prod(block_shape), input_shape[1] * block_shape[0] - crop[0,0] - crop[0,1], ..., input_shape[M] * block_shape[M-1] - crop[M-1,0] - crop[M-1,1], input_shape[M+1], . ..,輸入形狀[N-1]]
  • name 操作的名稱(可選)。

返回

  • 一個Tensor。具有與 input 相同的類型。

此操作將 "batch" 維度 0 重塑為形狀 block_shape + [batch]M + 1 維度,將這些塊交錯回到由空間維度 [1, ..., M] 定義的網格中,以獲得與輸入具有相同等級的結果。然後根據crops 選擇性地裁剪此中間結果的空間維度以生成輸出。這是 SpaceToBatch 的反麵(參見 tf.space_to_batch )。

例子:

  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]]]]

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.batch_to_space。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。