SpaceToBatch สำหรับเทนเซอร์ ND ประเภท T
การดำเนินการนี้จะแบ่งมิติ "เชิงพื้นที่" `[1, ..., M]` ของอินพุตออกเป็นตารางของบล็อกที่มีรูปร่าง `block_shape` และแทรกบล็อกเหล่านี้ด้วยมิติ "แบทช์" (0) เพื่อให้ในเอาต์พุต ขนาดเชิงพื้นที่ `[1, ..., M]` สอดคล้องกับตำแหน่งภายในตาราง และมิติแบทช์จะรวมทั้งตำแหน่งภายในบล็อกเชิงพื้นที่และตำแหน่งแบทช์ดั้งเดิม ก่อนที่จะแบ่งออกเป็นบล็อก ขนาดเชิงพื้นที่ของอินพุตจะถูกเสริมเป็นศูนย์ตาม "ช่องว่างภายใน" ดูด้านล่างสำหรับคำอธิบายที่ชัดเจน
ค่าคงที่
สตริง | OP_NAME | ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow |
วิธีการสาธารณะ
เอาท์พุต <T> | เป็นเอาท์พุต () ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์ |
คงที่ <T ขยาย TType > SpaceToBatchNd <T> | |
เอาท์พุต <T> | เอาท์พุท () |
วิธีการสืบทอด
ค่าคงที่
สตริงสุดท้ายแบบคงที่สาธารณะ OP_NAME
ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow
วิธีการสาธารณะ
เอาท์พุท สาธารณะ <T> asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
สร้าง SpaceToBatchNd <T> แบบคงที่สาธารณะ (ขอบเขต ขอบเขต , อินพุต Operand <T>, Operand <? ขยาย TNumber > blockShape, Operand <? ขยาย TNumber > paddings)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ SpaceToBatchNd ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
ป้อนข้อมูล | ND ที่มีรูปร่าง `input_shape = [ชุด] + รูปร่างเชิงพื้นที่ + รูปร่างที่เหลือ` โดยที่รูปร่างเชิงพื้นที่มีขนาด 'M` |
บล็อกรูปร่าง | 1-D ที่มีรูปร่าง `[M]` ค่าทั้งหมดต้องเป็น >= 1 |
ช่องว่างภายใน | 2-D ที่มีรูปร่าง `[M, 2]` ค่าทั้งหมดต้องเป็น >= 0 `paddings[i] = [pad_start, pad_end]` ระบุช่องว่างภายในสำหรับมิติอินพุต `i + 1` ซึ่งสอดคล้องกับมิติเชิงพื้นที่ `ฉัน` กำหนดให้ `block_shape[i]` หาร `input_shape[i + 1] + pad_start + pad_end` การดำเนินการนี้เทียบเท่ากับขั้นตอนต่อไปนี้: 1. Zero-pad จุดเริ่มต้นและจุดสิ้นสุดของขนาด `[1, ..., M]` ของอินพุตตาม `paddings` เพื่อสร้าง `padded` ของรูปร่าง `padded_shape` 2. ปรับรูปร่าง `padded` เป็น `reshape_padded` ของรูปร่าง: [ชุด] + [padded_shape[1] / block_shape[0], block_shape[0], ..., padded_shape[M] / block_shape[M-1], block_shape[M-1]] + ส่วนที่เหลือ 3. ปรับขนาดของ `reshape_padded` เพื่อสร้าง `permuted_reshape_padded` ของรูปร่าง: block_shape + [ชุด] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + เหลือ _รูปร่าง 4. ปรับรูปร่าง `permuted_reshape_padded` ใหม่เพื่อให้ `block_shape` แบนลงในมิติแบทช์ ทำให้เกิดเทนเซอร์เอาท์พุตของรูปร่าง: [batch * prod(block_shape)] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + เหลือ_รูปร่าง ตัวอย่างบางส่วน: (1) สำหรับการป้อนรูปร่างต่อไปนี้ `[1, 2, 2, 1]`, `block_shape = [2, 2]` และ `paddings = [[0, 0], [0, 0]]`: เอาท์พุตเทนเซอร์มีรูปร่าง `[4, 1, 1, 1]` และค่า: (2) สำหรับการป้อนรูปร่างต่อไปนี้ `[1, 2, 2, 3]`, `block_shape = [2, 2]` และ `paddings = [[0, 0], [0, 0]]`: เอาท์พุตเทนเซอร์มีรูปร่าง `[4, 1, 1, 3]` และค่า: (3) สำหรับการป้อนรูปร่างต่อไปนี้ `[1, 4, 4, 1]`, `block_shape = [2, 2]` และ `paddings = [[0, 0], [0, 0]]`: เอาท์พุตเทนเซอร์มีรูปร่าง `[4, 2, 2, 1]` และค่า: (4) สำหรับการป้อนรูปร่างต่อไปนี้ `[2, 2, 4, 1]`, block_shape = `[2, 2]` และช่องว่างภายใน = `[[0, 0], [2, 0]]`: เอาท์พุตเทนเซอร์มีรูปร่าง `[8, 1, 3, 1]` และค่า: เหนือสิ่งอื่นใด การดำเนินการนี้มีประโยชน์ในการลดภาวะกล้ามเนื้อมัดใหญ่ให้กลายเป็นการมัดแบบปกติ |
การส่งคืน
- อินสแตนซ์ใหม่ของ SpaceToBatchNd