คำเตือน: API นี้เลิกใช้งานแล้วและจะถูกลบออกใน TensorFlow เวอร์ชันในอนาคตหลังจาก การแทนที่ เสถียรแล้ว

SpaceToBatchNd

คลาสสุดท้ายสาธารณะ SpaceToBatchNd

SpaceToBatch สำหรับเทนเซอร์ ND ประเภท T

การดำเนินการนี้แบ่งมิติ "เชิงพื้นที่" `[1, ..., M]` ของอินพุตออกเป็นตารางของบล็อกรูปร่าง `block_shape` และแทรกบล็อกเหล่านี้ด้วยมิติ "แบทช์" (0) ในลักษณะที่ว่าในเอาต์พุต มิติเชิงพื้นที่ `[1, ..., M]` สอดคล้องกับตำแหน่งภายในกริด และมิติชุดงานจะรวมทั้งตำแหน่งภายในบล็อกเชิงพื้นที่และตำแหน่งชุดงานดั้งเดิม ก่อนที่จะแบ่งเป็นบล็อค มิติเชิงพื้นที่ของอินพุตจะเสริมเป็นศูนย์ตาม "ช่องว่างภายใน" หรือไม่ก็ได้ ดูด้านล่างสำหรับคำอธิบายที่แม่นยำ

การดำเนินการนี้เทียบเท่ากับขั้นตอนต่อไปนี้:

1. Zero-pad จุดเริ่มต้นและจุดสิ้นสุดของมิติ `[1, ..., M]` ของอินพุตตาม 'paddings' เพื่อสร้าง 'เบาะ' ของรูปร่าง 'padded_shape'

2. ปรับรูปร่าง `เบาะ' เป็น `รูปร่างใหม่_เบาะ' ของรูปร่าง:

[batch] + [padded_shape[1] / block_shape[0], block_shape[0], ..., padded_shape[M] / block_shape[M-1], block_shape[M-1]] + left_shape

3. ปรับเปลี่ยนขนาดของ `reshaped_padded` เพื่อสร้าง `permuted_reshaped_padded` ของรูปร่าง:

block_shape + [batch] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + เหลือ_shape

4. ปรับรูปร่าง `permuted_reshape_padded` ให้แบน `block_shape` ลงในมิติแบทช์ ทำให้เกิดเทนเซอร์ของรูปร่างผลลัพธ์:

[batch * prod(block_shape)] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + left_shape

ตัวอย่างบางส่วน:

(1) สำหรับการป้อนรูปร่างต่อไปนี้ `[1, 2, 2, 1]`, `block_shape = [2, 2]` และ `paddings = [[0, 0], [0, 0]]`:

x = [[[[1], [2]], [[3], [4]]]]
 
เทนเซอร์เอาต์พุตมีรูปร่าง `[4, 1, 1, 1]` และค่า:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
 
(2) สำหรับอินพุตต่อไปนี้ของรูปร่าง `[1, 2, 2, 3]`, `block_shape = [ 2, 2]` และ `paddings = [[0, 0], [0, 0]]`:
x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
เทนเซอร์เอาต์พุตมีรูปร่าง `[4, 1, 1, 3]` และค่า:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
 
(3) สำหรับการป้อนรูปร่างต่อไปนี้ `[1, 4, 4, 1]`, `block_shape = [2, 2]` และ `paddings = [[0, 0], [0, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]],
       [[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
เทนเซอร์เอาต์พุตมีรูปร่าง `[4, 2, 2, 1]` และค่า:
x = [[[[1], [3]], [[9], [11]]],
      [[[2], [4]], [[10], [12]]],
      [[[5], [7]], [[13], [15]]],
      [[[6], [8]], [[14], [16]]]]
 
(4) สำหรับการป้อนรูปร่างต่อไปนี้ `[2, 2, 4, 1]`, block_shape = `[ 2, 2]` และช่องว่างภายใน = `[[0, 0], [2, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]]],
      [[[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
เทนเซอร์เอาต์พุตมีรูปร่าง `[8, 1, 3, 1]` และค่า:
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]]]]
 
การดำเนินการนี้มีประโยชน์ในการลดการบิดตัวแบบรุนแรงให้กลายเป็นการบิดแบบปกติ

วิธีการสาธารณะ

เอาท์พุต <T>
เป็นเอาต์พุต ()
ส่งกลับค่าแฮนเดิลเชิงสัญลักษณ์ของเทนเซอร์
คงที่ <T, U ขยายจำนวน, V ขยายจำนวน> SpaceToBatchNd <T>
สร้าง ( ขอบเขต ขอบเขต, อินพุต ตัวถูกดำเนินการ <T>, ตัวถูกดำเนินการ < U > รูปร่างบล็อก, ช่อง ว่างภายในตัวถูกดำเนินการ <V>)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ปิดการดำเนินการ SpaceToBatchNd ใหม่
เอาท์พุต <T>

วิธีการสืบทอด

วิธีการสาธารณะ

เอาต์พุต สาธารณะ <T> asOutput ()

ส่งกลับค่าแฮนเดิลเชิงสัญลักษณ์ของเทนเซอร์

อินพุตสำหรับการทำงานของ TensorFlow เป็นเอาต์พุตของการดำเนินการอื่นของ TensorFlow วิธีนี้ใช้เพื่อขอรับหมายเลขอ้างอิงเชิงสัญลักษณ์ที่แสดงถึงการคำนวณของอินพุต

สร้าง SpaceToBatchNd <T> สแตติกสาธารณะ ( ขอบเขต ขอบเขต, อินพุตตัวถูกดำเนินการ <T>, ตัวถูกดำเนินการ <U> blockShape , ช่องว่างภายในตัวถูกดำเนิน การ <V>)

วิธีการจากโรงงานเพื่อสร้างคลาสที่ปิดการดำเนินการ SpaceToBatchNd ใหม่

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
ป้อนข้อมูล ND ที่มีรูปร่าง `input_shape = [batch] + spatial_shape + left_shape` โดยที่ spatial_shape มีมิติ `M`
บล็อกรูปร่าง 1-D ที่มีรูปร่าง `[M]` ค่าทั้งหมดต้องเป็น >= 1
paddings 2-D ที่มีรูปร่าง `[M, 2]` ค่าทั้งหมดต้องเป็น >= 0 `paddings[i] = [pad_start, pad_end]` ระบุช่องว่างภายในสำหรับมิติข้อมูลเข้า `i + 1' ซึ่งสอดคล้องกับมิติเชิงพื้นที่ `ฉัน` จำเป็นต้องมี `block_shape[i]` แบ่ง `input_shape[i + 1] + pad_start + pad_end`
คืนสินค้า
  • อินสแตนซ์ใหม่ของ SpaceToBatchNd

เอาต์พุต สาธารณะ <T> เอาต์พุต ()