TensorLabel คือ Wrapper ยูทิลิตีสำหรับ TensorBuffers ที่มีป้ายกํากับที่สื่อความหมายบนแกน
ตัวอย่างเช่น โมเดลการจัดประเภทรูปภาพอาจมี Tensor เอาต์พุตที่มีรูปร่างเป็น {1, 10} โดยที่ 1 คือขนาดกลุ่มและ 10 คือจำนวนหมวดหมู่ ที่จริงแล้ว ในแกนที่ 2 เราสามารถติดป้ายกำกับ tensor ย่อยแต่ละรายการด้วยชื่อหรือคำอธิบายของแต่ละหมวดหมู่ที่เกี่ยวข้อง TensorLabel
อาจช่วยแปลง Tensor ธรรมดาใน TensorBuffer
เป็นแผนที่จากป้ายกำกับที่กำหนดไว้ล่วงหน้าไปจนถึง Tensor ย่อย ในกรณีนี้ หากระบุป้ายกำกับ 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();
หมายเหตุ: ปัจจุบันเรารองรับเฉพาะการแปลง tensor-to-map สำหรับป้ายกำกับแรกที่มีขนาดมากกว่า 1
บริษัทก่อสร้าง
TensorLabel(แมป<จำนวนเต็ม, รายการ<สตริง>> กลุ่มแกนป้ายกำกับ, TensorBuffer tensorBuffer)
สร้างออบเจ็กต์ TensorLabel ที่ติดป้ายกำกับบนแกนของ tensor แบบหลายมิติได้
|
|
TensorLabel(List<String> principleLabels, TensorBuffer tensorBuffer)
สร้างออบเจ็กต์ TensorLabel ที่ติดป้ายกำกับบนแกนเดียวของ tensors แบบหลายมิติได้
|
วิธีการสาธารณะ
List<Category> |
getCategoryList()
รับรายการ
Category จากออบเจ็กต์ TensorLabel |
Map<String, Float> |
getMapWithFloatValue()
รับแผนที่ที่แมปป้ายกำกับเป็นแบบลอย
|
Map<String, TensorBuffer> |
getMapWithTensorBuffer()
รับแผนที่พร้อมคู่ป้ายกำกับและ TensorBuffer ที่สอดคล้องกัน
|
วิธีการที่รับช่วงมา
บริษัทก่อสร้าง
สาธารณะ TensorLabel (แมป<จำนวนเต็ม, รายการ<สตริง>> กลุ่มป้ายกำกับ, TensorBuffer tensorBuffer)
สร้างออบเจ็กต์ TensorLabel ที่ติดป้ายกำกับบนแกนของ tensor แบบหลายมิติได้
พารามิเตอร์
axisLabels | แผนที่ซึ่งมีคีย์คือรหัสแกน (เริ่มจาก 0) และค่าเป็นป้ายกำกับที่สอดคล้องกัน หมายเหตุ: ขนาดของป้ายกำกับควรเท่ากับขนาดของ tensor บนแกนนั้น |
---|---|
tensorBuffer | TensorBuffer ที่จะติดป้ายกำกับ |
การขว้าง
NullPointerException | หาก axisLabels หรือ tensorBuffer เป็นค่าว่าง หรือค่าใดๆ ใน axisLabels เป็นค่าว่าง |
---|---|
IllegalArgumentException | หากคีย์ใดใน axisLabels อยู่นอกช่วง (เปรียบเทียบกับรูปร่างของ tensorBuffer หรือค่าใดๆ (ป้ายกำกับ) มีขนาดต่างจาก tensorBuffer ในมิติข้อมูลที่กำหนด
|
สาธารณะ TensorLabel (รายการ<สตริง> กลุ่มป้ายกำกับ, TensorBuffer tensorBuffer)
สร้างออบเจ็กต์ TensorLabel ที่ติดป้ายกำกับบนแกนเดียวของ tensors แบบหลายมิติได้
หมายเหตุ: ป้ายกำกับจะปรากฎในแกนแรกที่มีขนาดมากกว่า 1 ตัวอย่างเช่น หากรูปร่างของ Tensor คือ [1, 10, 3] ระบบจะนำป้ายกำกับมาใช้ในแกน 1 (รหัสที่เริ่มจาก 0) และขนาดของ axisLabels
ควรเป็น 10 ด้วย
พารามิเตอร์
axisLabels | รายการป้ายกำกับซึ่งมีขนาดเท่ากับขนาดของ Tensor บนแกนที่จะติดป้ายกำกับ |
---|---|
tensorBuffer | TensorBuffer ที่จะติดป้ายกำกับ |
วิธีการสาธารณะ
สาธารณะ รายการ<หมวดหมู่> getCategoryList ()
รับรายการ Category
จากออบเจ็กต์ TensorLabel
แกนของป้ายกำกับควรเป็นแกนสุดท้ายที่มีประสิทธิภาพ (ซึ่งหมายความว่าทุก Tensor ย่อยที่ระบุโดยแกนนี้ควรมีขนาดคงที่เท่ากับ 1) เพื่อให้ Tensor ย่อยแต่ละรายการที่มีป้ายกำกับเป็นคะแนนค่าทศนิยมได้ ตัวอย่างเช่น TensorLabel
ที่มีรูปร่าง {2, 5, 3}
และแกน 2 ถูกต้อง หากแกนเป็น 1 หรือ 0 จะไม่สามารถแปลงเป็น Category
ได้
getMapWithFloatValue()
เป็นทางเลือก แต่จะแสดงผล Map
การขว้าง
IllegalStateException | หากขนาดของ Tensor ย่อยในแต่ละป้ายกำกับไม่ใช่ 1 |
---|
สาธารณะ แผนที่<String, Float> getMapWithFloatValue ()
รับแผนที่ที่แมปป้ายกำกับเป็นแบบลอย โปรดแมปเฉพาะบนแกนแรกที่มีขนาดมากกว่า 1 และแกนควรเป็นแกนสุดท้ายอย่างมีประสิทธิภาพ (ซึ่งหมายความว่า Tensor ย่อยทั้งหมดที่ระบุโดยแกนนี้ควรมีขนาดคงที่ที่ 1)
getCategoryList()
เป็น API ทางเลือกในการรับผลลัพธ์
การขว้าง
IllegalStateException | หากขนาดของ Tensor ย่อยในแต่ละป้ายกำกับไม่ใช่ 1 |
---|
สาธารณะ แผนที่<สตริง, TensorBuffer> getMapWithTensorBuffer ()
รับแผนที่พร้อมคู่ป้ายกำกับและ TensorBuffer ที่สอดคล้องกัน อนุญาตให้แมปเฉพาะบนแกนแรกที่มีขนาดมากกว่า 1 เท่านั้น