SpaceToBatchNd

공개 최종 클래스 SpaceToBatchNd

T 유형의 ND 텐서에 대한 SpaceToBatch.

이 작업은 입력의 "공간" 차원 `[1, ..., M]`을 `block_shape` 모양의 블록 그리드로 나누고 이러한 블록을 "배치" 차원(0)으로 인터리브하여 출력에서 , 공간 차원 `[1, ..., M]`은 그리드 내의 위치에 해당하고 배치 차원은 공간 블록 내의 위치와 원래 배치 위치를 모두 결합합니다. 블록으로 나누기 전에 입력의 공간 차원은 '패딩'에 따라 선택적으로 제로 패딩됩니다. 정확한 설명은 아래를 참조하세요.

공개 방법

출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.
static <T, U는 숫자를 확장하고, V는 숫자를 확장> SpaceToBatchNd <T>
생성 ( 범위 범위, 피연산자 <T> 입력, 피연산자 <U> blockShape, 피연산자 <V> 패딩)
새로운 SpaceToBatchNd 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
출력 ()

상속된 메서드

공개 방법

공개 출력 <T> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

공개 정적 SpaceToBatchNd <T> 생성 ( 범위 범위, 피연산자 <T> 입력, 피연산자 <U> blockShape, 피연산자 <V> 패딩)

새로운 SpaceToBatchNd 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
입력 `input_shape = [batch] + space_shape + 잔여_shape` 형태의 ND. 여기서 space_shape에는 `M` 차원이 있습니다.
블록모양 '[M]' 형태의 1차원, 모든 값은 1보다 커야 합니다.
패딩 `[M, 2]` 형태의 2차원, 모든 값은 0보다 커야 합니다. `paddings[i] = [pad_start, pad_end]`는 공간 차원에 해당하는 입력 차원 `i + 1`에 대한 패딩을 지정합니다. '나'. `block_shape[i]`는 `input_shape[i + 1] + pad_start + pad_end`를 나누어야 합니다.

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

1. `paddings`에 따라 입력의 차원 `[1, ..., M]`의 시작과 끝을 제로 패딩하여 `pded_shape` 모양의 `pded`를 생성합니다.

2. 'pended' 모양을 'reshape_pded' 모양으로 바꿉니다.

[배치] + [패딩_모양[1] / 블록_모양[0], 블록_모양[0], ..., 패딩_모양[M] / 블록_모양[M-1], 블록_모양[M-1]] + 남은_모양

3. 모양의 `permuted_reshape_pded`를 생성하기 위해 `reshape_pended`의 치수를 치환합니다.

블록_모양 + [배치] + [패딩_모양[1] / 블록_모양[0], ..., 패딩_모양[M] / 블록_모양[M-1]] + 남은_모양

4. `permuted_reshape_pded`의 형태를 변경하여 `block_shape`를 배치 차원으로 평면화하여 형태의 출력 텐서를 생성합니다.

[batch * prod(block_shape)] + [pended_shape[1] / block_shape[0], ..., pdding_shape[M] / block_shape[M-1]] + 잔여_모양

몇 가지 예:

(1) `[1, 2, 2, 1]`, `block_shape = [2, 2]` 및 `paddings = [[0, 0], [0, 0]]` 모양의 다음 입력에 대해:

x = [[[[1], [2]], [[3], [4]]]]
 
출력 텐서는 `[4, 1, 1, 1]` 형태와 값을 갖습니다:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
 
(2) 다음 형태 `[1, 2, 2, 3]` 입력의 경우, `block_shape = [ 2, 2]` 및 `paddings = [[0, 0], [0, 0]]`:
x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
출력 텐서의 모양은 `[4, 1, 1, 3]`이고 값은
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
 
입니다. (3) `[1, 4, 4, 1]`, `block_shape = [2, 2]` 및 `paddings = [[0, 0], [0, 0]]` 모양의 다음 입력에 대해:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]],
       [[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
출력 텐서는 `[4, 2, 2, 1]` 형태와 값을 갖습니다:
x = [[[[1], [3]], [[9], [11]]],
      [[[2], [4]], [[10], [12]]],
      [[[5], [7]], [[13], [15]]],
      [[[6], [8]], [[14], [16]]]]
 
(4) 다음 형태 `[2, 2, 4, 1]` 입력의 경우, block_shape = `[ 2, 2]` 및 패딩 = `[[0, 0], [2, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]]],
      [[[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
출력 텐서의 형태는 `[8, 1, 3, 1]`이고 값은
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]]]]
 
입니다. 무엇보다도 이 작업은 아트러스 컨볼루션을 일반 컨볼루션으로 줄이는 데 유용합니다.
보고
  • SpaceToBatchNd의 새 인스턴스

공개 출력 <T> 출력 ()