| คลาสย่อยโดยตรงที่รู้จัก |
แสดงบัฟเฟอร์ข้อมูลสำหรับอินพุตหรือเอาต์พุตของโมเดล
วิธีการสาธารณะ
| คงที่ TensorBuffer | |
| คงที่ TensorBuffer |
createFixedSize(int[] รูปร่าง, DataType dataType)
|
| คงที่ TensorBuffer |
createFrom(บัฟเฟอร์ TensorBuffer, ประเภทข้อมูล DataType)
สร้าง
TensorBufferข้อมูลที่คัดลอกมาจากอื่นด้วย DataType ที่ระบุ |
| ByteBuffer |
getBuffer()
แสดงผลบัฟเฟอร์ข้อมูล
|
| นามธรรม DataType |
getDataType()
แสดงผลประเภทข้อมูลของบัฟเฟอร์นี้
|
| int |
getFlatSize()
แสดงขนาด FlatSize ของบัฟเฟอร์
|
| นามธรรม float[] |
getFloatArray()
แสดงผลอาร์เรย์ลอยตัวของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้
|
| นามธรรม จำนวนลอยตัว |
getFloatValue(int absIndex)
แสดงผลค่าจำนวนลอยตัวในดัชนีที่กำหนด
|
| นามธรรม int[] |
getIntArray()
แสดงผลอาร์เรย์ int ของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้
|
| นามธรรม Int |
getIntValue(int absIndex)
แสดงผลค่า int ในดัชนีที่ระบุ
|
| int[] |
getShape()
รับรูปร่างปัจจุบัน
|
| นามธรรม Int |
getTypeSize()
แสดงผลจำนวนไบต์ขององค์ประกอบเดียวในอาร์เรย์
|
| boolean |
isDynamic()
แสดงผลหาก
TensorBuffer มีขนาดแบบไดนามิก (สามารถปรับขนาดได้ตามต้องการ) |
| นามธรรม เป็นโมฆะ |
loadArray(int[] src, รูปร่าง int[])
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้ที่มีรูปร่างเฉพาะ
|
| นามธรรม เป็นโมฆะ |
loadArray(Float[] src, รูปร่าง int[])
โหลดอาร์เรย์แบบลอยลงในบัฟเฟอร์นี้ที่มีรูปร่างเฉพาะ
|
| เป็นโมฆะ |
loadArray(Float[] src)
โหลดอาร์เรย์แบบลอยลงในบัฟเฟอร์นี้
|
| เป็นโมฆะ |
loadArray(int[] src)
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้
|
| เป็นโมฆะ | |
| เป็นโมฆะ |
loadBuffer(บัฟเฟอร์ ByteBuffer, รูปร่าง int[])
โหลดบัฟเฟอร์ไบต์ลงใน
TensorBuffer นี้ที่มีรูปร่างเฉพาะ |
เมธอดที่รับมา
วิธีการสาธารณะ
สาธารณะ คงที่ TensorBuffer createDynamic (DataType ประเภทข้อมูล)
สร้าง TensorBuffer แบบไดนามิกที่ว่างเปล่าโดยระบุ DataType รูปร่างของ
สร้างเมื่อ TensorBuffer คือ {0}
TensorBuffers แบบไดนามิกจะจัดสรรหน่วยความจำใหม่เมื่อโหลดอาร์เรย์หรือบัฟเฟอร์ข้อมูลของ ขนาดต่างๆ กัน ตัวอย่างเช่น
// Creating a float dynamic TensorBuffer:
TensorBuffer tensorBuffer = TensorBuffer.createDynamic(DataType.FLOAT32);
// Loading a float array:
float[] arr1 = new float[] {1, 2, 3};
tensorBuffer.loadArray(arr, new int[] {arr1.length});
// loading another float array:
float[] arr2 = new float[] {1, 2, 3, 4, 5};
tensorBuffer.loadArray(arr, new int[] {arr2.length});
// loading a third float array with the same size as arr2, assuming shape doesn't change:
float[] arr3 = new float[] {5, 4, 3, 2, 1};
tensorBuffer.loadArray(arr);
// loading a forth float array with different size as arr3 and omitting the shape will result
// in error:
float[] arr4 = new float[] {3, 2, 1};
tensorBuffer.loadArray(arr); // Error: The size of byte buffer and the shape do not match.
พารามิเตอร์
| dataType | ประเภทข้อมูลของ TensorBuffer ที่จะสร้าง
|
|---|
สาธารณะ คงที่ TensorBuffer createFixedSize (int[] รูปร่าง, DataType dataType)
สร้าง TensorBuffer ที่มี shape และ DataType ที่ระบุ นี่คือบางส่วน
ตัวอย่าง:
// Creating a float TensorBuffer with shape {2, 3}:
int[] shape = new int[] {2, 3};
TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.FLOAT32);
// Creating an uint8 TensorBuffer of a scalar:
int[] shape = new int[] {};
TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.UINT8);
// Creating an empty uint8 TensorBuffer:
int[] shape = new int[] {0};
TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.UINT8);
เมื่อสร้าง TensorBuffer ที่มีขนาดคงที่แล้วจะเปลี่ยนแปลงไม่ได้
พารามิเตอร์
| รูปร่าง | รูปร่างของ TensorBuffer ที่จะสร้าง |
|---|---|
| dataType | ประเภทข้อมูลของ TensorBuffer ที่จะสร้าง |
การขว้าง
| NullPointerException | หาก shape เป็นค่าว่าง |
|---|---|
| IllegalArgumentException | หาก shape มีองค์ประกอบที่ไม่เป็นบวก
|
สาธารณะ คงที่ TensorBuffer createFrom (TensorBuffer, DataType dataType)
สร้างTensorBufferข้อมูลที่คัดลอกมาจากอื่นด้วย DataType ที่ระบุ
พารามิเตอร์
| บัฟเฟอร์ | แหล่งที่มา TensorBuffer ที่จะคัดลอก |
|---|---|
| dataType | DataType ที่คาดไว้ของ TensorBuffer ที่สร้างขึ้นใหม่ |
การขว้าง
| NullPointerException | หาก buffer เป็นค่าว่าง
|
|---|
สาธารณะ Int getFlatSize ()
แสดงขนาด FlatSize ของบัฟเฟอร์
การขว้าง
| IllegalStateException | หากข้อมูลสำคัญเสียหาย |
|---|
สาธารณะ นามธรรม float[] getFloatArray ()
แสดงผลอาร์เรย์ลอยตัวของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้ หากบัฟเฟอร์เป็นคนละประเภท
ระบบจะแปลงค่าเป็นแบบลอย เช่น ค่าใน TensorBufferUint8 จะแปลงจาก uint8 เป็นแบบลอย
สาธารณะ นามธรรม จำนวนลอยตัว getFloatValue (int absIndex)
แสดงผลค่าจำนวนลอยตัวในดัชนีที่กำหนด หากบัฟเฟอร์เป็นคนละประเภทกับลอยตัว
จะถูกแปลงเป็นจำนวนลอยตัว ตัวอย่างเช่น เมื่ออ่านค่าจาก TensorBufferUint8 ค่าจะอ่านเป็น uint8 ก่อน จากนั้นจึงจะแปลงจาก
uint8 จะลอยได้
For example, a TensorBuffer with shape {2, 3} that represents the following array,
[[0.0f, 1.0f, 2.0f], [3.0f, 4.0f, 5.0f]].
The fourth element (whose value is 3.0f) in the TensorBuffer can be retrieved by:
float v = tensorBuffer.getFloatValue(3);
พารามิเตอร์
| absIndex | ดัชนีสัมบูรณ์ของค่าที่จะอ่าน |
|---|
สาธารณะ นามธรรม int[] getIntArray ()
แสดงผลอาร์เรย์ int ของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้ หากบัฟเฟอร์เป็นประเภทอื่น
มากกว่า int ระบบจะแปลงค่าเป็น int และอาจสูญเสียความแม่นยํา ตัวอย่างเช่น
การรับอาร์เรย์ int จาก TensorBufferFloat ที่มีค่า {400.32f, 23.04f} ซึ่งเป็นเอาต์พุต
เท่ากับ {400, 23}
สาธารณะ นามธรรม Int getIntValue (int absIndex)
แสดงผลค่า int ในดัชนีที่ระบุ หากบัฟเฟอร์เป็นคนละประเภทกับ int ค่า
จะถูกแปลงเป็น int เช่น เมื่ออ่านค่าจาก TensorBufferFloat
ก่อนอื่นระบบจะอ่านค่าเป็นเลขทศนิยม จากนั้นจึงจะแปลงค่าจากเลขทศนิยมเป็น "จำนวนเต็ม" แพ้
อาจมีความแม่นยำ
For example, a TensorBuffer with shape {2, 3} that represents the following array,
[[0.0f, 1.0f, 2.0f], [3.0f, 4.0f, 5.0f]].
The fourth element (whose value is 3.0f) in the TensorBuffer can be retrieved by:
int v = tensorBuffer.getIntValue(3);
Note that v is converted from 3.0f to 3 as a result of type conversion.
พารามิเตอร์
| absIndex | ดัชนีสัมบูรณ์ของค่าที่จะอ่าน |
|---|
สาธารณะ int[] getShape ()
รับรูปร่างปัจจุบัน (ส่งคืนสำเนาที่นี่เพื่อหลีกเลี่ยงการแก้ไขที่ไม่คาดคิด)
การขว้าง
| IllegalStateException | หากข้อมูลสำคัญเสียหาย |
|---|
สาธารณะ นามธรรม Int getTypeSize ()
แสดงผลจำนวนไบต์ขององค์ประกอบเดียวในอาร์เรย์ ตัวอย่างเช่น บัฟเฟอร์ลอยจะ แสดงผล 4 และบัฟเฟอร์หนึ่งไบต์จะแสดงผล 1
สาธารณะ นามธรรม เป็นโมฆะ loadArray (int[] src, int[] รูปร่าง)
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้ที่มีรูปร่างเฉพาะ หากบัฟเฟอร์เป็นคนละประเภท
น้อยกว่า int ค่าจะถูกแปลงเป็นประเภทบัฟเฟอร์ก่อนที่จะโหลดลงใน
และอาจทำให้สูญเสียความแม่นยำ เช่น การโหลดอาร์เรย์ int ที่มีค่า {400,
-23} ลงใน TensorBufferUint8 ค่าจะถูกบีบให้เป็น [0, 255] จากนั้น
แคสต์ไปยัง uint8 โดย {255, 0}
พารามิเตอร์
| src | อาร์เรย์แหล่งที่มาที่จะโหลด |
|---|---|
| รูปร่าง | รูปร่างของ Tensor ที่ src แสดง |
การขว้าง
| NullPointerException | หาก src เป็นค่าว่าง |
|---|---|
| NullPointerException | หาก shape เป็นค่าว่าง |
| IllegalArgumentException | หากขนาดของอาร์เรย์ที่จะโหลดไม่ตรงกับ รูปร่างที่ระบุ |
สาธารณะ นามธรรม เป็นโมฆะ loadArray (ทศนิยม[] src, รูปร่าง int[])
โหลดอาร์เรย์แบบลอยลงในบัฟเฟอร์นี้ที่มีรูปร่างเฉพาะ หากบัฟเฟอร์เป็นคนละประเภท
แบบลอย ระบบจะแปลงค่าเป็นประเภทบัฟเฟอร์ก่อนที่จะโหลดลงใน
และอาจทำให้สูญเสียความแม่นยำ เช่น การโหลดอาร์เรย์ลอยตัวไปยัง TensorBufferUint8 ที่มีค่า {400.32f, -23.04f} ค่าจะถูกบีบเป็น [0, 255] และ
จะแคสต์ไปยัง uint8 ด้วย {255, 0}
พารามิเตอร์
| src | อาร์เรย์แหล่งที่มาที่จะโหลด |
|---|---|
| รูปร่าง | รูปร่างของ Tensor ที่ src แสดง |
การขว้าง
| NullPointerException | หาก src เป็นค่าว่าง |
|---|---|
| NullPointerException | หาก shape เป็นค่าว่าง |
| IllegalArgumentException | หากขนาดของอาร์เรย์ที่จะโหลดไม่ตรงกับ รูปร่างที่ระบุ |
สาธารณะ เป็นโมฆะ loadArray (Float[] src)
โหลดอาร์เรย์แบบลอยลงในบัฟเฟอร์นี้ หากบัฟเฟอร์เป็นคนละประเภทกับลอยตัว
ระบบจะแปลงค่าเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และจะสูญเสียค่า
อาจมีความแม่นยำ เช่น การโหลดอาร์เรย์แบบลอยลงใน TensorBufferUint8
ที่มีค่า {400.32f, -23.04f} ค่าจะถูกบีบเป็น [0, 255] แล้วแคสต์เป็น
uint8 by {255, 0}
การใช้วิธีนี้จะถือว่ารูปร่างของ src เหมือนกับรูปร่างของ
TensorBuffer ดังนั้นขนาดของ buffer (src.length) จึงควรตรงกันเสมอ
ขนาดคงที่ของ TensorBuffer นี้สำหรับทั้ง TensorBuffer แบบขนาดคงที่และแบบไดนามิก ใช้ loadArray(float[], int[]) หาก src มีรูปร่างอื่น
พารามิเตอร์
| src | อาร์เรย์แหล่งที่มาที่จะโหลด |
|---|
สาธารณะ เป็นโมฆะ loadArray (int[] src)
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้ หากบัฟเฟอร์เป็นคนละประเภทกับ int ค่า
จะถูกแปลงเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และสูญเสีย
อาจต้องใช้ความแม่นยำ ตัวอย่างเช่น กำลังโหลดอาร์เรย์ int ที่มีค่า {400, -23} ลงใน TensorBufferUint8 ค่าจะถูกบีบเป็น [0, 255] จากนั้นจึงแคสต์เป็น uint8 ด้วย
{255, 0}
การใช้วิธีนี้จะถือว่ารูปร่างของ src เหมือนกับรูปร่างของ
TensorBuffer ดังนั้นขนาดของ buffer (src.length) จึงควรตรงกันเสมอ
ขนาดคงที่ของ TensorBuffer นี้สำหรับทั้ง TensorBuffer แบบขนาดคงที่และแบบไดนามิก ใช้ loadArray(int[], int[]) หาก src มีรูปร่างอื่น
พารามิเตอร์
| src | อาร์เรย์แหล่งที่มาที่จะโหลด |
|---|
สาธารณะ เป็นโมฆะ loadBuffer (บัฟเฟอร์ ByteBuffer)
โหลดบัฟเฟอร์ 1 ไบต์ลงใน TensorBuffer นี้ ขนาดบัฟเฟอร์ต้องตรงกับขนาดแบบราบของ
TensorBufferนี้
การใช้วิธีนี้จะถือว่ารูปร่างของ buffer เหมือนกับรูปร่างของ
TensorBuffer ดังนั้นขนาดของ buffer (buffer.limit()) ควรเป็น
ตรงกับขนาดเดี่ยวของ TensorBuffer นี้สำหรับทั้ง TensorBuffer แบบขนาดคงที่และแบบไดนามิก ใช้ loadBuffer(ByteBuffer, int[]) หาก buffer มีพารามิเตอร์อื่น
รูปร่าง
สำคัญ: บัฟเฟอร์ที่โหลดเป็นข้อมูลอ้างอิง อย่าแก้ไข เราไม่ได้สร้างสำเนาไว้ที่นี่เพื่อ ด้านประสิทธิภาพการทำงาน แต่หากจำเป็นต้องแก้ไข โปรดทำสำเนา
เพื่อประสิทธิภาพที่ดีที่สุด ให้โหลด ByteBuffer โดยตรงหรือ ByteBuffer เสมอ
โดยใช้อาร์เรย์
หาก buffer เป็นแบบอ่านอย่างเดียว เราจะใช้กลยุทธ์การคัดลอกเมื่อเขียนเพื่อเพิ่มประสิทธิภาพ
พารามิเตอร์
| บัฟเฟอร์ | บัฟเฟอร์ไบต์ที่จะโหลด |
|---|
สาธารณะ เป็นโมฆะ loadBuffer (บัฟเฟอร์ ByteBuffer, รูปร่าง int[])
โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer นี้ที่มีรูปร่างเฉพาะ
สำคัญ: บัฟเฟอร์ที่โหลดเป็นข้อมูลอ้างอิง อย่าแก้ไข เราไม่ได้สร้างสำเนาไว้ที่นี่เพื่อ ด้านประสิทธิภาพการทำงาน แต่หากจำเป็นต้องแก้ไข โปรดทำสำเนา
เพื่อประสิทธิภาพที่ดีที่สุด ให้โหลด ByteBuffer โดยตรงหรือ ByteBuffer เสมอ
โดยใช้อาร์เรย์
พารามิเตอร์
| บัฟเฟอร์ | บัฟเฟอร์ไบต์ที่จะโหลด |
|---|---|
| รูปร่าง |
การขว้าง
| NullPointerException | หาก buffer เป็นค่าว่าง |
|---|---|
| IllegalArgumentException | หากขนาดของ buffer และ typeSize ไม่
หรือขนาดของ buffer และ flatSize ไม่ตรงกัน
|