テンソルフロー::作戦::宇宙へバッチND
#include <array_ops.h>
T 型の ND テンソルのBatchToSpace。
まとめ
この操作は、「バッチ」次元 0 をM + 1
次元の形状block_shape + [batch]
に再形成し、これらのブロックを空間次元[1, ..., M]
で定義されたグリッドにインターリーブして戻し、次の結果を取得します。入力と同じランク。この中間結果の空間次元は、出力を生成するためのcrops
に従ってオプションでトリミングされます。これは SpaceToBatch の逆です。正確な説明については、以下を参照してください。
引数:
- スコープ:スコープオブジェクト
- input: 形状を持つ ND
input_shape = [batch] + spatial_shape + remaining_shape
、ここで spatial_shape には M 次元があります。 - block_shape: 形状
[M]
の 1 次元、すべての値は 1 以上である必要があります。 - Crops: 形状
[M, 2]
の 2 次元、すべての値は >= 0 である必要がありますcrops[i] = [crop_start, crop_end]
は、空間次元i
に対応する入力次元i + 1
から切り取る量を指定します。crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1]
ことが必要です。
この操作は次の手順と同等です。
-
input
再形成して形状をreshaped
: [block_shape[0], ..., block_shape[M-1],バッチ / prod(block_shape), input_shape[1], ..., input_shape[N-1]] -
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]] - 形状を並べ替えて、形状 [batch / prod(block_shape),input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],input_shape[M+1], .. の
reshaped_permuted
permuted
生成します。 ., input_shape[N-1]] -
crops
に従ってreshaped_permuted
の次元[1, ..., M]
の開始と終了を切り取り、形状の出力を生成します: [batch / prod(block_shape),input_shape[1] * block_shape[0] - Crops[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]
、および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]]]]
戻り値:
-
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
公共機能
宇宙へバッチND
BatchToSpaceND( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input block_shape, ::tensorflow::Input crops )
ノード
::tensorflow::Node * node() const
演算子::tensorflow::入力
operator::tensorflow::Input() const
演算子::tensorflow::出力
operator::tensorflow::Output() const