SpaceToDepth

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

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

จัดเรียงบล็อกข้อมูลเชิงพื้นที่ใหม่ให้มีความลึก โดยเฉพาะอย่างยิ่ง สหกรณ์นี้จะส่งออกสำเนาของเทนเซอร์อินพุตโดยที่ค่าจากมิติ "ความสูง" และ "ความกว้าง" จะถูกย้ายไปยังมิติ "ความลึก" attr `block_size` ระบุขนาดบล็อกอินพุต

* บล็อกที่ไม่ทับซ้อนกันขนาด `block_size x ขนาดบล็อก` จะถูกจัดเรียงใหม่ตามความลึกในแต่ละตำแหน่ง * ความลึกของเทนเซอร์เอาท์พุตคือ `block_size * block_size * input_deep` * พิกัด Y, X ภายในแต่ละบล็อกของอินพุตกลายเป็นองค์ประกอบลำดับสูงของดัชนีช่องสัญญาณเอาท์พุต * ความสูงและความกว้างของเทนเซอร์อินพุตจะต้องหารด้วย block_size ลงตัว

`data_format` attr ระบุโครงร่างของเทนเซอร์อินพุตและเอาท์พุตด้วยตัวเลือกต่อไปนี้: "NHWC": `[ แบทช์ ความสูง ความกว้าง แชนเนล ]` "NCHW": `[ แบทช์ แชนเนล ความสูง ความกว้าง ]` " NCHW_VECT_C": `qint8 [ ชุด, ช่อง / 4, ความสูง, ความกว้าง, 4 ]`

การพิจารณาการดำเนินการเป็นการแปลงเทนเซอร์ 6-D จะเป็นประโยชน์ เช่น สำหรับ data_format = NHWC แต่ละองค์ประกอบในเทนเซอร์อินพุตสามารถระบุได้ผ่าน 6 พิกัด เรียงลำดับโดยการลดความสำคัญเค้าโครงหน่วยความจำเป็น: n,oY,bY,oX,bX,iC (โดยที่ n=ดัชนีแบทช์, oX, oY หมายถึง X หรือพิกัด Y ภายในภาพที่ส่งออก, bX, bY หมายถึงพิกัดภายในบล็อกอินพุต, iC หมายถึงช่องสัญญาณอินพุต) เอาต์พุตจะเป็นการทรานสโพสไปยังโครงร่างต่อไปนี้: n,oY,oX,bY,bX,iC

การดำเนินการนี้มีประโยชน์สำหรับการปรับขนาดการเปิดใช้งานระหว่างการโนโวลูชั่น (แต่เก็บข้อมูลทั้งหมด) เช่น แทนที่จะรวมกลุ่ม นอกจากนี้ยังมีประโยชน์สำหรับการฝึกโมเดลแบบ Convolutional เพียงอย่างเดียวอีกด้วย

ตัวอย่างเช่น เมื่อป้อนข้อมูลรูปร่าง `[1, 2, 2, 1]`, data_format = "NHWC" และ block_size = 2:

x = [[[[1], [2]],
       [[3], [4]]]]
 
การดำเนินการนี้จะส่งออกเทนเซอร์ของรูปร่าง `[1, 1, 1, 4 ]`:
[[[[1, 2, 3, 4]]]]
 
ที่นี่ อินพุตมีแบทช์ 1 และแต่ละองค์ประกอบแบทช์มีรูปร่าง `[2, 2, 1]` เอาต์พุตที่เกี่ยวข้องจะมีองค์ประกอบเดียว (เช่น ความกว้างและความสูงเป็น 1 ทั้งคู่) และจะ มีความลึก 4 ช่อง (1 * block_size * block_size) รูปร่างองค์ประกอบเอาต์พุตคือ `[1, 1, 4]`

สำหรับเทนเซอร์อินพุตที่มีความลึกมากกว่า รูปร่างในที่นี้ `[1, 2, 2, 3]` เช่น

x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
การดำเนินการนี้ สำหรับ block_size เป็น 2 จะส่งกลับเทนเซอร์ของรูปร่างต่อไปนี้ `[1, 1, 1, 12]`
[[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]
 
ในทำนองเดียวกัน สำหรับอินพุตรูปร่างต่อไปนี้ `[1 4 4 1]` และขนาดบล็อกเป็น 2:
x = [[[[1],   [2],  [5],  [6]],
       [[3],   [4],  [7],  [8]],
       [[9],  [10], [13],  [14]],
       [[11], [12], [15],  [16]]]]
 
ผู้ดำเนินการจะส่งคืนเทนเซอร์ของรูปร่างต่อไปนี้ `[1 2 2 4]` :
x = [[[[1, 2, 3, 4],
        [5, 6, 7, 8]],
       [[9, 10, 11, 12],
        [13, 14, 15, 16]]]]
 

คลาสที่ซ้อนกัน

ระดับ SpaceToDepth ตัวเลือก แอ็ตทริบิวต์ทางเลือกสำหรับ SpaceToDepth

ค่าคงที่

สตริง OP_NAME ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow

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

เอาท์พุต <T>
เป็นเอาท์พุต ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
คงที่ <T ขยาย TType > SpaceToDepth <T>
สร้าง (ขอบเขต ขอบเขต , อินพุต ตัวดำเนินการ <T>, ขนาดบล็อกยาว, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ SpaceToDepth ใหม่
SpaceToDepth.Options แบบคงที่
dataFormat (สตริง dataFormat)
เอาท์พุต <T>

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

ค่าคงที่

สตริงสุดท้ายแบบคงที่สาธารณะ OP_NAME

ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow

ค่าคงที่: "SpaceToDepth"

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

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

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

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

สร้าง SpaceToDepth <T> แบบคงที่สาธารณะ (ขอบเขต ขอบเขต , อินพุต Operand <T>, Long blockSize, ตัวเลือก... ตัวเลือก)

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

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
บล็อกขนาด ขนาดของบล็อกเชิงพื้นที่
ตัวเลือก มีค่าแอตทริบิวต์ทางเลือก
การส่งคืน
  • ตัวอย่างใหม่ของ SpaceToDepth

สาธารณะ SpaceToDepth.Options dataFormat แบบคงที่ (String dataFormat)

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