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àoi + 1, tương ứng với chiều không giani. 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:
- Định hình lại
inputthành hình dạngreshaped: [block_shape[0], ..., block_shape[M-1], batch / prod(block_shape), input_shape[1], ..., input_shape[N-1]] - Hoán vị các chiều của
reshapedđể tạo ra hình dạngpermutedcủ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]] - Reshape
permutedto producereshaped_permutedof 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]] - Cắt phần đầu và cuối của các chiều
[1, ..., M]củareshaped_permutedtheocropsđể 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ề:
-
Output: Tensor đầu ra.
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