SpaceToDepth cho tensor loại T.
Sắp xếp lại các khối dữ liệu không gian theo chiều sâu. Cụ thể hơn, hoạt động này tạo ra một bản sao của tenxơ đầu vào trong đó các giá trị từ chiều `chiều cao` và `chiều rộng` được di chuyển sang chiều `độ sâu`. Attr `block_size` cho biết kích thước khối đầu vào.
* Các khối không chồng chéo có kích thước `block_size x block size` được sắp xếp lại theo chiều sâu tại mỗi vị trí. * Độ sâu của tensor đầu ra là `block_size * block_size * input_deep`. * Tọa độ Y, X trong mỗi khối đầu vào trở thành thành phần bậc cao của chỉ số kênh đầu ra. * Chiều cao và chiều rộng của tensor đầu vào phải chia hết cho block_size.
Attr `data_format` chỉ định bố cục của tensor đầu vào và đầu ra với các tùy chọn sau: "NHWC": `[ batch, Height, width,channel ]` "NCHW": `[ batch,channels,height,width ]` " NCHW_VECT_C": `qint8 [ lô, kênh / 4, chiều cao, chiều rộng, 4 ]`
Sẽ rất hữu ích nếu coi hoạt động này giống như việc biến đổi Tensor 6-D. ví dụ: đối với data_format = NHWC, Mỗi phần tử trong tensor đầu vào có thể được chỉ định thông qua 6 tọa độ, được sắp xếp theo mức độ quan trọng của bố cục bộ nhớ giảm dần như: n,oY,bY,oX,bX,iC (trong đó n=chỉ số lô, oX, oY có nghĩa là X hoặc tọa độ Y trong ảnh đầu ra, bX, bY nghĩa là tọa độ trong khối đầu vào, iC nghĩa là các kênh đầu vào). Đầu ra sẽ là một sự chuyển đổi sang bố cục sau: n,oY,oX,bY,bX,iC
Thao tác này rất hữu ích để thay đổi kích thước kích hoạt giữa các tích chập (nhưng vẫn giữ tất cả dữ liệu), ví dụ thay vì gộp chung. Nó cũng hữu ích cho việc đào tạo các mô hình tích chập thuần túy.
Ví dụ: với đầu vào có hình dạng `[1, 2, 2, 1]`, data_format = "NHWC" và block_size = 2:
x = [[[[1], [2]],
[[3], [4]]]]
Thao tác này sẽ tạo ra một tenxơ có hình dạng `[1, 1, 1, 4]`: [[[[1, 2, 3, 4]]]]
Ở đây, đầu vào có một batch là 1 và mỗi phần tử batch có hình dạng `[2, 2, 1]`, đầu ra tương ứng sẽ có một phần tử duy nhất (tức là chiều rộng và chiều cao đều là 1) và sẽ có chiều sâu là 4 kênh (1 * kích thước khối * kích thước khối). Hình dạng phần tử đầu ra là `[1, 1, 4]`.Đối với một tenxơ đầu vào có độ sâu lớn hơn, ở đây có hình dạng `[1, 2, 2, 3]`, ví dụ:
x = [[[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]]]
Thao tác này, đối với block_size là 2, sẽ trả về tensor sau có hình dạng `[1, 1, 1, 12]` [[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]
Tương tự, đối với đầu vào sau của hình `[1 4 4 1]` và kích thước khối là 2: x = [[[[1], [2], [5], [6]],
[[3], [4], [7], [8]],
[[9], [10], [13], [14]],
[[11], [12], [15], [16]]]]
toán tử sẽ trả về tensor sau có dạng `[1 2 2 4]`: x = [[[[1, 2, 3, 4],
[5, 6, 7, 8]],
[[9, 10, 11, 12],
[13, 14, 15, 16]]]]
Các lớp lồng nhau
lớp học | SpaceToDepth.Options | Thuộc tính tùy chọn cho SpaceToDepth |
Hằng số
Sợi dây | OP_NAME | Tên của op này, được biết đến bởi công cụ lõi TensorFlow |
Phương pháp công cộng
Đầu ra <T> | asOutput () Trả về tay cầm tượng trưng của tensor. |
tĩnh <T mở rộng TType > SpaceToDepth <T> | tạo (Phạm vi phạm vi , đầu vào Toán hạng <T>, Kích thước khối dài, Tùy chọn... tùy chọn) Phương thức xuất xưởng để tạo một lớp bao bọc thao tác SpaceToDepth mới. |
SpaceToDepth.Options tĩnh | dataFormat (Định dạng dữ liệu chuỗi) |
Đầu ra <T> | đầu ra () |
Phương pháp kế thừa
Hằng số
Chuỗi cuối cùng tĩnh công khai OP_NAME
Tên của op này, được biết đến bởi công cụ lõi TensorFlow
Phương pháp công cộng
Đầu ra công khai <T> asOutput ()
Trả về tay cầm tượng trưng của tensor.
Đầu vào của các hoạt động TensorFlow là đầu ra của một hoạt động TensorFlow khác. Phương pháp này được sử dụng để thu được một thẻ điều khiển mang tính biểu tượng đại diện cho việc tính toán đầu vào.
public static SpaceToDepth <T> tạo (Phạm vi phạm vi, đầu vào Toán hạng <T>, Kích thước khối dài, Tùy chọn... )
Phương thức xuất xưởng để tạo một lớp bao bọc một thao tác SpaceToDepth mới.
Thông số
phạm vi | phạm vi hiện tại |
---|---|
kích thước khối | Kích thước của khối không gian. |
tùy chọn | mang các giá trị thuộc tính tùy chọn |
Trả lại
- một phiên bản mới của SpaceToDepth