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> | 출력 () |
상속된 메서드
공개 방법
공개 출력 <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`를 나누어야 합니다. |
보고
- SpaceToBatchNd의 새 인스턴스