텐서플로우:: 작전:: BatchToSpaceND
#include <array_ops.h>T 유형의 ND 텐서에 대한 BatchToSpace .
요약
이 작업은 "배치" 차원 0을 block_shape + [batch] 모양의 M + 1 차원으로 재구성하고 이러한 블록을 공간 차원 [1, ..., M] 으로 정의된 그리드에 다시 인터리브하여 다음과 같은 결과를 얻습니다. 입력과 동일한 순위입니다. 이 중간 결과의 공간 차원은 선택적으로 crops 에 따라 잘려 출력을 생성합니다. 이는 SpaceToBatch의 반대입니다. 정확한 설명은 아래를 참조하세요.
인수:
- 범위: 범위 개체
- 입력: ND 모양
input_shape = [batch] + spatial_shape + remaining_shape, 여기서 Spatial_shape에는 M 차원이 있습니다. - block_shape: 모양이
[M]인 1-D, 모든 값은 >= 1이어야 합니다. - Crops: 모양이
[M, 2]인 2D, 모든 값은 >= 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]] -
reshapedpermuted[batch / prod(block_shape),input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],input_shape[M+1], ..., 입력_모양[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형태 변경 ., 입력_모양[N-1]] -
crops에 따라reshaped_permuted의 차원[1, ..., M]의 시작과 끝을 잘라 다음 모양의 출력을 생성합니다. [batch / prod(block_shape),input_shape[1] * block_shape[0] - 자르기[0, 0] - 자르기[0,1], ..., input_shape[M] * 블록 모양[M-1] - 자르기[M-1,0] - 자르기[M-1,1],input_shape[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]]]]보고:
-
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() const
연산자::텐서플로우::출력
operator::tensorflow::Output() const