tensorflow::ops::BatchToSpaceND

#include <array_ops.h>

BatchToSpace dành cho tensor ND loại T.

Bản tóm tắt

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

Luận điểm:

  • phạm vi: Một đối tượng Phạm vi
  • Đầu vào: ND với hình dạng input_shape = [batch] + spatial_shape + remaining_shape , trong đó spatial_shape có M chiều.
  • block_shape: 1-D với hình dạng [M] , tất cả các giá trị phải >= 1.
  • crops: 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 lượng cần cắt từ chiều đầu vào i + 1 , tương ứng với chiều không gian i . Yêu cầu là 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 thành hình dạng reshaped : [block_shape[0], ..., block_shape[M-1], batch / prod(block_shape), input_shape[1], ..., input_shape[N-1]]
  2. Hoán vị các chiều của reshaped để tạo ra hình dạng permuted của [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. Reshape permuted to produce reshaped_permuted of shape [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à cuối của các chiều [1, ..., M] của reshaped_permuted theo crops để tạo ra đầu ra có hình dạng: [batch / prod(block_shape),input_shape[1] * block_shape[0] - crops[0,0] - crops[0,1], ..., input_shape[M] * block_shape[M-1] - crops[M-1,0] - crops[M-1,1],input_shape[M+1], ..., input_shape[N-1]]

Một vài ví dụ:

(1) Đối với đầu vào sau có hình dạng [4, 1, 1, 1] , block_shape = [2, 2] , và 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ó hình dạng [4, 1, 1, 3] , block_shape = [2, 2] , và 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ó hình dạng [4, 2, 2, 1] , block_shape = [2, 2] , và 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ó hình dạng [8, 1, 3, 1] , block_shape = [2, 2] , và 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]]]]

Trả về:

Hàm khởi tạo và hàm 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 

operator::tensorflow::Input

 operator::tensorflow::Input() const 

operator::tensorflow::Output

 operator::tensorflow::Output() const