จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
เทนเซอร์โฟลว์:: ปฏิบัติการ:: BatchToSpaceND
#include <array_ops.h>
BatchToSpace สำหรับเทนเซอร์ ND ประเภท T
สรุป
การดำเนินการนี้จะปรับรูปร่างมิติ "แบทช์" 0 เป็นมิติ M + 1
ของรูปร่าง block_shape + [batch]
แทรกบล็อกเหล่านี้กลับเข้าไปในตารางที่กำหนดโดยมิติเชิงพื้นที่ [1, ..., M]
เพื่อให้ได้ผลลัพธ์ด้วย อันดับเดียวกับอินพุต มิติเชิงพื้นที่ของผลลัพธ์ระดับกลางนี้จะถูกครอบตัดตามการ crops
เพื่อสร้างผลลัพธ์ นี่คือสิ่งที่ตรงกันข้ามกับ SpaceToBatch ดูด้านล่างสำหรับคำอธิบายที่ชัดเจน
ข้อโต้แย้ง:
- ขอบเขต: วัตถุ ขอบเขต
- อินพุต: ND ที่มีรูปร่าง
input_shape = [batch] + spatial_shape + remaining_shape
โดยที่ spatial_shape มีมิติ M - block_shape: 1-D ที่มีรูปร่าง
[M]
ค่าทั้งหมดจะต้องเป็น >= 1 - crops: 2-D ที่มีรูปร่าง
[M, 2]
ค่าทั้งหมดจะต้องเป็น >= 0 crops[i] = [crop_start, crop_end]
ระบุจำนวนที่จะครอบตัดจากมิติข้อมูลอินพุต i + 1
ซึ่งสอดคล้องกับมิติเชิงพื้นที่ i
จำเป็นต้องมี crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1]
การดำเนินการนี้เทียบเท่ากับขั้นตอนต่อไปนี้:
- ปรับรูปร่าง
input
ใหม่เพื่อ reshaped
ของรูปร่าง: [block_shape[0], ..., block_shape[M-1], ชุด / prod(block_shape), input_shape[1], ..., input_shape[N-1]] - มิติการเรียงสับเปลี่ยนของ
reshaped
เพื่อสร้างรูปร่าง permuted
ไป [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]] - เปลี่ยนรูปร่าง
permuted
เพื่อสร้างรูปร่าง reshaped_permuted
[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]] - ครอบตัดจุดเริ่มต้นและจุดสิ้นสุดของขนาด
[1, ..., M]
ของ reshaped_permuted
ตาม crops
เพื่อสร้างผลลัพธ์ของรูปร่าง: [batch / prod(block_shape),input_shape[1] * block_shape[0] - crops[0, 0] - ครอบตัด[0,1], ..., input_shape[M] * block_shape[M-1] - ครอบตัด[M-1,0] - ครอบตัด[M-1,1],input_shape[M+1] , ..., input_shape[N-1]]
ตัวอย่างบางส่วน:
(1) สำหรับการป้อนรูปร่าง [4, 1, 1, 1]
, block_shape = [2, 2]
และ crops = [[0, 0], [0, 0]]
:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
เอาท์พุตเทนเซอร์มีรูปร่าง [1, 2, 2, 1]
และค่า:
x = [[[[1], [2]], [[3], [4]]]]
(2) สำหรับการป้อนข้อมูลรูปร่าง [4, 1, 1, 3]
, block_shape = [2, 2]
และ crops = [[0, 0], [0, 0]]
:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
เอาท์พุตเทนเซอร์มีรูปร่าง [1, 2, 2, 3]
และค่า:
x = [[[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]]]
(3) สำหรับการป้อนข้อมูลรูปร่าง [4, 2, 2, 1]
, 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]]]]
เอาท์พุตเทนเซอร์มีรูปร่าง [1, 4, 4, 1]
และค่า:
x = [[[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]]
(4) สำหรับการป้อนรูปร่าง [8, 1, 3, 1]
, 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]]]]
เอาท์พุตเทนเซอร์มีรูปร่าง [2, 2, 4, 1]
และค่า:
x = [[[[1], [2], [3], [4]],
[[5], [6], [7], [8]]],
[[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]]
ผลตอบแทน:
คุณลักษณะสาธารณะ
งานสาธารณะ
โหนด
::tensorflow::Node * node() const
operator::tensorflow::Input() const
ตัวดำเนินการ::tensorflow::เอาต์พุต
operator::tensorflow::Output() const
เนื้อหาของหน้าเว็บนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่ต้องระบุที่มาของครีเอทีฟคอมมอนส์ 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 เว้นแต่จะระบุไว้เป็นอย่างอื่น โปรดดูรายละเอียดที่นโยบายเว็บไซต์ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-26 UTC
[null,null,["อัปเดตล่าสุด 2025-07-26 UTC"],[],[],null,["# tensorflow::ops::BatchToSpaceND Class Reference\n\ntensorflow::ops::BatchToSpaceND\n===============================\n\n`#include \u003carray_ops.h\u003e`\n\n[BatchToSpace](/versions/r1.15/api_docs/cc/class/tensorflow/ops/batch-to-space#classtensorflow_1_1ops_1_1_batch_to_space) for N-D tensors of type T.\n\nSummary\n-------\n\nThis operation reshapes the \"batch\" dimension 0 into `M + 1` dimensions of shape `block_shape + [batch]`, interleaves these blocks back into the grid defined by the spatial dimensions `[1, ..., M]`, to obtain a result with the same rank as the input. The spatial dimensions of this intermediate result are then optionally cropped according to `crops` to produce the output. This is the reverse of SpaceToBatch. See below for a precise description.\n\nArguments:\n\n- scope: A [Scope](/versions/r1.15/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope) object\n- input: N-D with shape `input_shape = [batch] + spatial_shape + remaining_shape`, where spatial_shape has M dimensions.\n- block_shape: 1-D with shape `[M]`, all values must be \\\u003e= 1.\n- crops: 2-D with shape `[M, 2]`, all values must be \\\u003e= 0. `crops[i] = [crop_start, crop_end]` specifies the amount to crop from input dimension `i + 1`, which corresponds to spatial dimension `i`. It is required that `crop_start[i] + crop_end[i] \u003c= block_shape[i] * input_shape[i + 1]`.\n\n\u003cbr /\u003e\n\nThis operation is equivalent to the following steps:\n\n\n1. Reshape `input` to `reshaped` of shape: \\[block_shape\\[0\\], ..., block_shape\\[M-1\\], batch / prod(block_shape), input_shape\\[1\\], ..., input_shape\\[N-1\\]\\]\n2. Permute dimensions of `reshaped` to produce `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\\]\\]\n3. 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\\]\\]\n4. Crop the start and end of dimensions `[1, ..., M]` of `reshaped_permuted` according to `crops` to produce the output of shape: \\[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\\]\\]\n\n\u003cbr /\u003e\n\nSome examples:\n\n(1) For the following input of shape `[4, 1, 1, 1]`, `block_shape = [2, 2]`, and `crops = [[0, 0], [0, 0]]`:\n\n\n```text\n[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]\n```\n\n\u003cbr /\u003e\n\nThe output tensor has shape `[1, 2, 2, 1]` and value:\n\n\n```text\nx = [[[[1], [2]], [[3], [4]]]]\n```\n\n\u003cbr /\u003e\n\n(2) For the following input of shape `[4, 1, 1, 3]`, `block_shape = [2, 2]`, and `crops = [[0, 0], [0, 0]]`:\n\n\n```text\n[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]\n```\n\n\u003cbr /\u003e\n\nThe output tensor has shape `[1, 2, 2, 3]` and value:\n\n\n```text\nx = [[[[1, 2, 3], [4, 5, 6]],\n [[7, 8, 9], [10, 11, 12]]]]\n```\n\n\u003cbr /\u003e\n\n(3) For the following input of shape `[4, 2, 2, 1]`, `block_shape = [2, 2]`, and `crops = [[0, 0], [0, 0]]`:\n\n\n```text\nx = [[[[1], [3]], [[9], [11]]],\n [[[2], [4]], [[10], [12]]],\n [[[5], [7]], [[13], [15]]],\n [[[6], [8]], [[14], [16]]]]\n```\n\n\u003cbr /\u003e\n\nThe output tensor has shape `[1, 4, 4, 1]` and value:\n\n\n```text\nx = [[[[1], [2], [3], [4]],\n [[5], [6], [7], [8]],\n [[9], [10], [11], [12]],\n [[13], [14], [15], [16]]]]\n```\n\n\u003cbr /\u003e\n\n(4) For the following input of shape `[8, 1, 3, 1]`, `block_shape = [2, 2]`, and `crops = [[0, 0], [2, 0]]`:\n\n\n```text\nx = [[[[0], [1], [3]]], [[[0], [9], [11]]],\n [[[0], [2], [4]]], [[[0], [10], [12]]],\n [[[0], [5], [7]]], [[[0], [13], [15]]],\n [[[0], [6], [8]]], [[[0], [14], [16]]]]\n```\n\n\u003cbr /\u003e\n\nThe output tensor has shape `[2, 2, 4, 1]` and value:\n\n\n```text\nx = [[[[1], [2], [3], [4]],\n [[5], [6], [7], [8]]],\n [[[9], [10], [11], [12]],\n [[13], [14], [15], [16]]]]\n```\n\n\u003cbr /\u003e\n\nReturns:\n\n- [Output](/versions/r1.15/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output): The output tensor.\n\n\u003cbr /\u003e\n\n| ### Constructors and Destructors ||\n|---|---|\n| [BatchToSpaceND](#classtensorflow_1_1ops_1_1_batch_to_space_n_d_1ae9fc7cf839b67ec1692eb9dbd13dab3f)`(const ::`[tensorflow::Scope](/versions/r1.15/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope)` & scope, ::`[tensorflow::Input](/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input)` input, ::`[tensorflow::Input](/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input)` block_shape, ::`[tensorflow::Input](/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input)` crops)` ||\n\n| ### Public attributes ||\n|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|\n| [operation](#classtensorflow_1_1ops_1_1_batch_to_space_n_d_1a1e8d19aed27a8ba75041200ee25a7310) | [Operation](/versions/r1.15/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation) |\n| [output](#classtensorflow_1_1ops_1_1_batch_to_space_n_d_1a2f9a5258c2d37ba9ce71c6ebfe2f754d) | `::`[tensorflow::Output](/versions/r1.15/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output) |\n\n| ### Public functions ||\n|------------------------------------------------------------------------------------------------------------------------------|------------------------|\n| [node](#classtensorflow_1_1ops_1_1_batch_to_space_n_d_1a8c320b154abac62302b289161e5aa745)`() const ` | `::tensorflow::Node *` |\n| [operator::tensorflow::Input](#classtensorflow_1_1ops_1_1_batch_to_space_n_d_1a94adde19cfddf4d1109cceff401543c8)`() const ` | ` ` ` ` |\n| [operator::tensorflow::Output](#classtensorflow_1_1ops_1_1_batch_to_space_n_d_1a17e07f190557e6565111355cc159b528)`() const ` | ` ` ` ` |\n\nPublic attributes\n-----------------\n\n### operation\n\n```text\nOperation operation\n``` \n\n### output\n\n```text\n::tensorflow::Output output\n``` \n\nPublic functions\n----------------\n\n### BatchToSpaceND\n\n```gdscript\n BatchToSpaceND(\n const ::tensorflow::Scope & scope,\n ::tensorflow::Input input,\n ::tensorflow::Input block_shape,\n ::tensorflow::Input crops\n)\n``` \n\n### node\n\n```gdscript\n::tensorflow::Node * node() const \n``` \n\n### operator::tensorflow::Input\n\n```gdscript\n operator::tensorflow::Input() const \n``` \n\n### operator::tensorflow::Output\n\n```gdscript\n operator::tensorflow::Output() const \n```"]]