Google I/O에 참여해 주셔서 감사합니다. 주문형 모든 세션 보기 주문형 시청

tensorflow :: ops :: BatchToSpaceND

#include <array_ops.h>

T 유형의 ND 텐서에 대한 BatchToSpace

요약

이 작업은 "batch"차원 0을 M + 1 차원의 block_shape + [batch] 모양으로 block_shape + [batch] , 이러한 블록을 공간 차원 [1, ..., M] 의해 정의 된 그리드로 다시 인터리브하여 다음과 같은 결과를 얻습니다. 입력과 동일한 순위. 이 중간 결과의 공간 치수는 선택적으로 crops 에 따라 잘려 출력을 생성합니다. 이것은 SpaceToBatch의 반대입니다. 정확한 설명은 아래를 참조하십시오.

인수 :

  • 범위 : 범위 개체
  • 입력 : ND with shape input_shape = [batch] + spatial_shape + remaining_shape , 여기서 spatial_shape는 M 차원을 갖습니다.
  • block_shape : 1-D with shape [M] , 모든 값은> = 1이어야합니다.
  • crops : 모양이 [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] 합니다.

이 작업은 다음 단계와 동일합니다.

  1. 모양 변경 inputreshaped 형상 : block_shape [0], ..., block_shape [M-1]에 배치 / 자극 (block_shape) input_shape [1], ..., input_shape [N-1]
  2. reshaped 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. 모양 변경이 permuted 생산하고하기 reshaped_permuted 형상 [일괄 / 자극 (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 형태의 출력을 생성하기 위해 [일괄 / 자극 (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]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]]]]

보고:

생성자와 소멸자

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 

연산자 :: tensorflow :: 입력

 operator::tensorflow::Input() const 

연산자 :: tensorflow :: 출력

 operator::tensorflow::Output() const