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
วิธีการสาธารณะ
เอาท์พุท สาธารณะ <T> asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
สร้าง SpaceToDepth <T> แบบคงที่สาธารณะ (ขอบเขต ขอบเขต , อินพุต Operand <T>, Long blockSize, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ SpaceToDepth ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
ขนาดบล็อก | ขนาดของบล็อกเชิงพื้นที่ |
ตัวเลือก | มีค่าแอตทริบิวต์ทางเลือก |
การส่งคืน
- ตัวอย่างใหม่ของ SpaceToDepth