このページは Cloud Translation API によって翻訳されました。
Switch to English

tensorflow :: ops :: BatchToSpaceND

#include <array_ops.h>

T型のNDテンソルのBatchToSpace

概要

この操作は、「バッチ」次元0を形状block_shape + [batch] M + 1次元に再形成し、これらのブロックを空間次元[1, ..., M]で定義されたグリッドにインターリーブして、入力と同じランク。この中間結果の空間次元は、次いで、任意選択に応じてトリミングされているcropsの出力を生成します。これはSpaceToBatchの逆です。正確な説明については、以下を参照してください。

引数:

  • scope: Scopeオブジェクト
  • 入力:形状がNDのinput_shape = [batch] + spatial_shape + remaining_shape 。ここで、spatial_shapeはM次元です。
  • block_shape:1-D with shape [M] 、すべての値は> = 1でなければなりません。
  • クロップ:形状が[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. 変形のinputreshapedの形状:[block_shape [0]、...、block_shape [M-1]、バッチ/ PROD(block_shape)、input_shape [1]、...、input_shape [N-1]]
  2. 形状のpermutedを生成するためにreshaped形状の次元を並べ替える[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]]
  3. 形状のreshape_permutedを生成するためにpermutedreshaped_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. 寸法の開始と終了トリミング[1, ..., M]reshaped_permutedに従ってcrops形状の出力製造する:[バッチ/ 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]、input_shape [M + 1] 、...、input_shape [N-1]]

いくつかの例:

(1)次の形状[4, 1, 1, 1] block_shape = [2, 2] [4, 1, 1, 1]block_shape = [2, 2]crops = [[0, 0], [0, 0]]

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

出力テンソルの形状は[1, 2, 2, 1] 1、2、2、1 [1, 2, 2, 1] 、値は次のとおりです。

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

(2)次の形状の入力[4, 1, 1, 3] block_shape = [2, 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] 1、2、2、3 [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] [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] 1、4、4、1 [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] [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] 2、2、4、1 [2, 2, 4, 1] 、値は次のとおりです。

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

戻り値:

  • Output :出力テンソル。

コンストラクタとデストラクタ

BatchToSpaceND (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input block_shape, :: tensorflow::Input crops)

公開属性

operation
output

公開機能

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

公開属性

操作

Operation operation

出力

::tensorflow::Output output

公開機能

BatchToSpaceND

 BatchToSpaceND(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input block_shape,
  ::tensorflow::Input crops
)

ノード

::tensorflow::Node * node() const 

operator :: tensorflow :: Input

 operator::tensorflow::Input() const 

operator :: tensorflow :: Output

 operator::tensorflow::Output() const