SpaceToBatchNd

공개 최종 클래스 SpaceToBatchNd

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

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

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

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]]]]
 
입니다. 무엇보다도 이 작업은 아트러스 컨볼루션을 일반 컨볼루션으로 줄이는 데 유용합니다.

공개 방법

출력 <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]` 모양의 2D, 모든 값은 0보다 커야 합니다. `paddings[i] = [pad_start, pad_end]`는 공간 차원에 해당하는 입력 차원 `i + 1`에 대한 패딩을 지정합니다. '나'. `block_shape[i]`는 `input_shape[i + 1] + pad_start + pad_end`를 나누어야 합니다.
보고
  • SpaceToBatchNd의 새 인스턴스

공개 출력 <T> 출력 ()