TensorLabel เป็น wrapper util สำหรับ TensorBuffers ที่มีป้ายกำกับที่มีความหมายบนแกน
ตัวอย่างเช่น โมเดลการจัดหมวดหมู่รูปภาพอาจมีเอาท์พุตเทนเซอร์ที่มีรูปร่างเป็น {1, 10} โดยที่ 1 คือขนาดแบตช์ และ 10 คือจำนวนหมวดหมู่ ที่จริงแล้ว บนแกนที่ 2 เราสามารถติดป้ายกำกับแต่ละเทนเซอร์ย่อยด้วยชื่อหรือคำอธิบายของแต่ละหมวดหมู่ที่เกี่ยวข้องได้ TensorLabel
สามารถช่วยแปลง Tensor ธรรมดาใน TensorBuffer
ให้เป็นแผนที่จากป้ายกำกับที่กำหนดไว้ล่วงหน้าไปเป็นเทนเซอร์ย่อย ในกรณีนี้ หากระบุป้ายกำกับ 10 รายการสำหรับแกนที่ 2 TensorLabel
จะสามารถแปลง {1, 10} Tensor ดั้งเดิมเป็นแผนผังองค์ประกอบ 10 องค์ประกอบ ซึ่งแต่ละค่าจะเป็น Tensor ในรูปทรง {} (สเกลาร์) ตัวอย่างการใช้งาน:
TensorBuffer outputTensor = ...; List<String> labels = FileUtil.loadLabels(context, labelFilePath); // labels the first axis with size greater than one TensorLabel labeled = new TensorLabel(labels, outputTensor); // If each sub-tensor has effectively size 1, we can directly get a float value Map<String, Float> probabilities = labeled.getMapWithFloatValue(); // Or get sub-tensors, when each sub-tensor has elements more than 1 Map<String, TensorBuffer> subTensors = labeled.getMapWithTensorBuffer();
หมายเหตุ: ปัจจุบันเรารองรับเฉพาะการแปลงเทนเซอร์เป็นแมปสำหรับป้ายกำกับแรกที่มีขนาดมากกว่า 1
คอนสตรัคชั่นสาธารณะ
TensorLabel ( แผนที่ < จำนวนเต็ม , รายการ < สตริง >> axisLabels, TensorBuffer tensorBuffer) สร้างวัตถุ TensorLabel ซึ่งสามารถติดป้ายกำกับบนแกนของเทนเซอร์หลายมิติได้ | |
TensorLabel ( รายการ < สตริง > axisLabels, TensorBuffer tensorBuffer) สร้างวัตถุ TensorLabel ซึ่งสามารถติดป้ายกำกับบนแกนเดียวของเทนเซอร์หลายมิติได้ |
วิธีการสาธารณะ
รายการ < หมวดหมู่ > | รับหมวดหมู่รายการ () รับรายการ Category จากวัตถุ TensorLabel |
แผนที่ < สตริง , ลอย > | getMapWithFloatValue () รับแผนที่ที่แมปป้ายกำกับให้ลอย |
แผนที่ < สตริง , TensorBuffer > | getMapWithTensorBuffer () รับแผนที่พร้อมป้ายกำกับและ TensorBuffer ที่เกี่ยวข้อง |
วิธีการสืบทอด
คอนสตรัคชั่นสาธารณะ
TensorLabel สาธารณะ ( แผนที่ < จำนวนเต็ม , รายการ < สตริง >> axisLabels, TensorBuffer tensorBuffer)
สร้างวัตถุ TensorLabel ซึ่งสามารถติดป้ายกำกับบนแกนของเทนเซอร์หลายมิติได้
พารามิเตอร์
axisLabels | แผนที่ซึ่งมีคีย์คือรหัสแกน (เริ่มจาก 0) และค่าเป็นป้ายกำกับที่สอดคล้องกัน หมายเหตุ: ขนาดของฉลากควรเท่ากันกับขนาดของเทนเซอร์บนแกนนั้น |
---|---|
เทนเซอร์บัฟเฟอร์ | TensorBuffer ที่จะติดป้ายกำกับ |
ขว้าง
NullPointerException | ถ้า axisLabels หรือ tensorBuffer เป็นโมฆะ หรือค่าใดๆ ใน axisLabels เป็นโมฆะ |
---|---|
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากคีย์ใด ๆ ใน axisLabels อยู่นอกช่วง (เมื่อเทียบกับรูปร่างของ tensorBuffer หรือค่าใด ๆ (ป้ายกำกับ) มีขนาดแตกต่างกันด้วย tensorBuffer ในมิติที่กำหนด |
TensorLabel สาธารณะ ( รายการ < สตริง > axisLabels, TensorBuffer tensorBuffer)
สร้างวัตถุ TensorLabel ซึ่งสามารถติดป้ายกำกับบนแกนเดียวของเทนเซอร์หลายมิติได้
หมายเหตุ: ป้ายจะถูกติดบนแกนแรกซึ่งมีขนาดใหญ่กว่า 1 ตัวอย่างเช่น หากรูปร่างของเทนเซอร์เป็น [1, 10, 3] ป้ายจะถูกติดบนแกน 1 (id เริ่มต้นจาก 0) และขนาดของ axisLabels
ควรเป็น 10 เช่นกัน
พารามิเตอร์
axisLabels | รายการป้ายกำกับ ซึ่งควรมีขนาดเท่ากันกับขนาดของเทนเซอร์บนแกนที่จะติดป้ายกำกับ |
---|---|
เทนเซอร์บัฟเฟอร์ | TensorBuffer ที่จะติดป้ายกำกับ |
วิธีการสาธารณะ
รายการ สาธารณะ < ประเภท > getCategoryList ()
รับรายการ Category
จากวัตถุ TensorLabel
แกนของป้ายกำกับควรเป็นแกนสุดท้ายอย่างมีประสิทธิภาพ (ซึ่งหมายความว่าเทนเซอร์ย่อยทุกตัวที่ระบุโดยแกนนี้ควรมีขนาดแบนเท่ากับ 1) เพื่อให้เทนเซอร์ย่อยแต่ละตัวที่มีป้ายกำกับสามารถแปลงเป็นคะแนนค่าทศนิยมได้ ตัวอย่าง: TensorLabel
ที่มีรูปร่าง {2, 5, 3}
และแกน 2 สามารถใช้ได้ หากแกนเป็น 1 หรือ 0 จะไม่สามารถแปลงเป็น Category
ได้
getMapWithFloatValue()
เป็นทางเลือกหนึ่ง แต่จะส่งคืน Map
เป็นผลลัพธ์
ขว้าง
IllegalStateException | ถ้าขนาดของเทนเซอร์ย่อยในแต่ละฉลากไม่ใช่ 1 |
---|
แผนที่ สาธารณะ < String , Float > getMapWithFloatValue ()
รับแผนที่ที่แมปป้ายกำกับให้ลอย อนุญาตเฉพาะการแมปบนแกนแรกที่มีขนาดมากกว่า 1 และแกนควรเป็นแกนสุดท้ายอย่างมีประสิทธิภาพ (ซึ่งหมายความว่าเทนเซอร์ย่อยทุกตัวที่ระบุโดยแกนนี้ควรมีขนาดเรียบเป็น 1)
getCategoryList()
เป็น API ทางเลือกอื่นในการรับผลลัพธ์
ขว้าง
IllegalStateException | ถ้าขนาดของเทนเซอร์ย่อยในแต่ละฉลากไม่ใช่ 1 |
---|
แผนที่ สาธารณะ < String , TensorBuffer > getMapWithTensorBuffer ()
รับแผนที่พร้อมป้ายกำกับและ TensorBuffer ที่เกี่ยวข้อง อนุญาตให้แมปบนแกนแรกที่มีขนาดมากกว่า 1 ในปัจจุบันเท่านั้น