tensorflow :: ops :: BatchToSpaceND
#include <array_ops.h>
タイプTのNDテンソルのBatchToSpace 。
概要
この操作は、「バッチ」次元0を形状block_shape + [batch]
M + 1
次元に再形成し、これらのブロックを空間次元[1, ..., M]
で定義されたグリッドにインターリーブして戻し、結果を取得します。入力と同じランク。この中間結果の空間次元は、次いで、任意選択に応じてトリミングされているcrops
の出力を生成します。これはSpaceToBatchの逆です。正確な説明については、以下を参照してください。
引数:
- スコープ:スコープオブジェクト
- input:ND with shape
input_shape = [batch] + spatial_shape + remaining_shape
、ここで、spatial_shapeはM次元です。 - block_shape:1-D、形状
[M]
、すべての値は> = 1でなければなりません。 - トリミング:形状
[M, 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
[バッチ/ PROD(block_shape)形状で、input_shape [1]、block_shape [0]、...、input_shape [M]、block_shape [M-1]、input_shape [M + 1] ...、input_shape [N-1]] - 変形は、
permuted
生成するreshaped_permuted
、形状の[バッチ/ PROD(block_shape)、input_shape [1] * block_shape [0]、...、input_shape [M] * block_shape [M-1]、input_shape [M + 1] .. 。、input_shape [N-1]] - 寸法の開始と終了トリミング
[1, ..., M]
のreshaped_permuted
に従ってcrops
形状の出力製造する:[バッチ/ PROD(block_shape)、input_shape [1] * block_shape [0] -作物[0、 0] -crops [0,1]、...、input_shape [M] * block_shape [M-1] -crops [M-1,0] -crops [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