TensorLabel

คลาสสาธารณะ TensorLabel

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<StringFloat>
getMapWithFloatValue()
รับแผนที่ที่แมปป้ายกำกับเป็นแบบลอย
Map<StringTensorBuffer>
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

สาธารณะ แผนที่<StringFloat> getMapWithFloatValue ()

รับแผนที่ที่แมปป้ายกำกับเป็นแบบลอย โปรดแมปเฉพาะบนแกนแรกที่มีขนาดมากกว่า 1 และแกนควรเป็นแกนสุดท้ายอย่างมีประสิทธิภาพ (ซึ่งหมายความว่า Tensor ย่อยทั้งหมดที่ระบุโดยแกนนี้ควรมีขนาดคงที่ที่ 1)

getCategoryList() เป็น API ทางเลือกในการรับผลลัพธ์

การขว้าง
IllegalStateException หากขนาดของ Tensor ย่อยในแต่ละป้ายกำกับไม่ใช่ 1

สาธารณะ แผนที่<สตริงTensorBuffer> getMapWithTensorBuffer ()

รับแผนที่พร้อมคู่ป้ายกำกับและ TensorBuffer ที่สอดคล้องกัน อนุญาตให้แมปเฉพาะบนแกนแรกที่มีขนาดมากกว่า 1 เท่านั้น