dòng chảy :: hoạt động :: BatchToSpaceND

#include <array_ops.h>

BatchToSpace cho bộ căng ND kiểu T.

Tóm lược

Thao tác này định dạng lại kích thước "lô" 0 thành kích thước M + 1 của hình block_shape + [batch] , xen kẽ các khối này trở lại lưới được xác định bởi các kích thước không gian [1, ..., M] , để thu được kết quả với cùng thứ hạng với đầu vào. Các kích thước không gian của kết quả trung gian này sau đó được tùy chọn cắt theo crops để tạo ra đầu ra. Đây là mặt trái của SpaceToBatch. Xem bên dưới để biết mô tả chính xác.

Tranh luận:

  • phạm vi: Một đối tượng Phạm vi
  • input: ND với shape input_shape = [batch] + spatial_shape + remaining_shape lại_shape, trong đó spatial_shape có M kích thước.
  • block_shape: 1-D với shape [M] , tất cả các giá trị phải> = 1.
  • cây trồng: 2-D với hình dạng [M, 2] , tất cả các giá trị phải> = 0. crops[i] = [crop_start, crop_end] chỉ định số lượng cây trồng từ thứ nguyên đầu vào i + 1 , tương ứng với thứ nguyên không gian i . Yêu cầu crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1] .

Thao tác này tương đương với các bước sau:

  1. Định hình lại input để reshaped hình dạng: [block_shape [0], ..., block_shape [M-1], batch / prod (block_shape), input_shape [1], ..., input_shape [N-1]]
  2. Hoán vị các kích thước reshaped để tạo ra permuted của hình dạng [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. Định reshaped_permuted permuted để tạo ra reshaped_permuted hình dạng [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]]
  4. Cắt phần đầu và phần cuối của kích thước [1, ..., M] của reshaped_permuted theo crops để tạo ra đầu ra của hình dạng: [batch / prod (block_shape), input_shape [1] * block_shape [0] - crop [0, 0] - cây trồng [0,1], ..., input_shape [M] * block_shape [M-1] - crop [M-1,0] - crop [M-1,1], input_shape [M + 1] , ..., input_shape [N-1]]

Vài ví dụ:

(1) Đối với đầu vào sau của shape [4, 1, 1, 1] , block_shape = [2, 2]block_shape = [2, 2] crops = [[0, 0], [0, 0]] :

[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]

Tensor đầu ra có hình dạng [1, 2, 2, 1] và giá trị:

x = [[[[1], [2]], [[3], [4]]]]

(2) Đối với đầu vào sau của shape [4, 1, 1, 3] , block_shape = [2, 2]block_shape = [2, 2] crops = [[0, 0], [0, 0]] :

[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]

Tensor đầu ra có hình dạng [1, 2, 2, 3] và giá trị:

x = [[[[1, 2, 3], [4, 5, 6]],
      [[7, 8, 9], [10, 11, 12]]]]

(3) Đối với đầu vào sau của shape [4, 2, 2, 1] , block_shape = [2, 2]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]]]]

Tensor đầu ra có hình dạng [1, 4, 4, 1] và giá trị:

x = [[[[1],   [2],  [3],  [4]],
     [[5],   [6],  [7],  [8]],
     [[9],  [10], [11],  [12]],
     [[13], [14], [15],  [16]]]]

(4) Đối với đầu vào sau của shape [8, 1, 3, 1] , block_shape = [2, 2]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]]]]

Tensor đầu ra có hình dạng [2, 2, 4, 1] và giá trị:

x = [[[[1],   [2],  [3],  [4]],
      [[5],   [6],  [7],  [8]]],
     [[[9],  [10], [11],  [12]],
      [[13], [14], [15],  [16]]]]

Lợi nhuận:

  • Output : Bộ căng đầu ra.

Người xây dựng và Người phá hủy

BatchToSpaceND (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input block_shape, :: tensorflow::Input crops)

Thuộc tính công khai

operation
output

Chức năng công cộng

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

Thuộc tính công khai

hoạt động

Operation operation

đầu ra

::tensorflow::Output output

Chức năng công cộng

BatchToSpaceND

 BatchToSpaceND(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input block_shape,
  ::tensorflow::Input crops
)

nút

::tensorflow::Node * node() const 

toán tử :: tensorflow :: Đầu vào

 operator::tensorflow::Input() const 

toán tử :: tensorflow :: Đầu ra

 operator::tensorflow::Output() const