TensorBuffer

TensorBuffer คลาสนามธรรมสาธารณะ
คลาสย่อยโดยตรงที่รู้จัก

แสดงถึงบัฟเฟอร์ข้อมูลสำหรับอินพุตหรือเอาต์พุตของโมเดล

วิธีการสาธารณะ

TensorBuffer แบบคงที่
createDynamic ( ประเภท ข้อมูล ประเภทข้อมูล)
สร้าง TensorBuffer ไดนามิกว่างด้วย DataType ที่ระบุ
TensorBuffer แบบคงที่
createFixedSize (รูปร่าง int[], DataType dataType)
สร้าง TensorBuffer ที่มี shape และ DataType ที่ระบุ
TensorBuffer แบบคงที่
createFrom (บัฟเฟอร์ TensorBuffer , DataType dataType)
สร้างข้อมูลการคัดลอกแบบลึก TensorBuffer จากที่อื่น โดยมี DataType ที่ระบุ
ByteBuffer
รับบัฟเฟอร์ ()
ส่งกลับบัฟเฟอร์ข้อมูล
ประเภทข้อมูล นามธรรม
รับ DataType ()
ส่งกลับชนิดข้อมูลของบัฟเฟอร์นี้
ภายใน
รับขนาดแบน ()
รับค่า flatSize ของบัฟเฟอร์
ลอยนามธรรม[]
getFloatArray ()
ส่งกลับอาร์เรย์ทศนิยมของค่าที่เก็บไว้ในบัฟเฟอร์นี้
ลอยนามธรรม
getFloatValue (int absIndex)
ส่งกลับค่าทศนิยมที่ดัชนีที่กำหนด
อินท์นามธรรม[]
getIntArray ()
ส่งกลับอาร์เรย์ int ของค่าที่เก็บไว้ในบัฟเฟอร์นี้
บทคัดย่อ
getIntValue (int absIndex)
ส่งกลับค่า int ที่ดัชนีที่กำหนด
อินท์[]
รับรูปร่าง ()
ได้รูปทรงปัจจุบัน
บทคัดย่อ
getTypeSize ()
ส่งกลับจำนวนไบต์ขององค์ประกอบเดียวในอาร์เรย์
บูลีน
เป็นไดนามิก ()
ส่งคืนหาก TensorBuffer มีขนาดไดนามิก (สามารถปรับขนาดได้ตามต้องการ)
ความว่างเปล่าที่เป็นนามธรรม
loadArray (int[] src, int[] รูปร่าง)
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้ด้วยรูปร่างเฉพาะ
ความว่างเปล่าที่เป็นนามธรรม
loadArray (float[] src, int[] รูปร่าง)
โหลดอาร์เรย์ float ลงในบัฟเฟอร์นี้ด้วยรูปร่างเฉพาะ
เป็นโมฆะ
loadArray (ลอย [] src)
โหลดอาร์เรย์ float ลงในบัฟเฟอร์นี้
เป็นโมฆะ
loadArray (int[] src)
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้
เป็นโมฆะ
loadBuffer (บัฟเฟอร์ ByteBuffer )
โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer นี้
เป็นโมฆะ
loadBuffer (บัฟเฟอร์ ByteBuffer รูปร่าง int [])
โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer นี้ด้วยรูปร่างเฉพาะ

วิธีการสืบทอด

วิธีการสาธารณะ

TensorBuffer สาธารณะคงที่ createDynamic ( DataType dataType)

สร้าง TensorBuffer ไดนามิกว่างด้วย DataType ที่ระบุ รูปร่างของ TensorBuffer ที่สร้างขึ้นคือ {0}

Dynamic 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.
 

พารามิเตอร์
ประเภทข้อมูล ประเภทข้อมูลของ 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 ที่จะสร้าง
ประเภทข้อมูล ประเภทข้อมูลของ TensorBuffer ที่จะสร้าง
ขว้าง
NullPointerException ถ้า shape เป็นโมฆะ
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย ถ้า shape มีองค์ประกอบที่ไม่เป็นบวก

สาธารณะ TensorBuffer createFrom แบบคงที่ (บัฟเฟอร์ TensorBuffer , DataType dataType)

สร้างข้อมูลการคัดลอกแบบลึก TensorBuffer จากที่อื่น โดยมี DataType ที่ระบุ

พารามิเตอร์
กันชน TensorBuffer ต้นทางที่จะคัดลอกมา
ประเภทข้อมูล DataType ที่คาดหวังของ TensorBuffer ที่สร้างขึ้นใหม่
ขว้าง
NullPointerException ถ้า buffer เป็นโมฆะ

ByteBuffer สาธารณะ getBuffer ()

ส่งกลับบัฟเฟอร์ข้อมูล

DataType นามธรรมสาธารณะ getDataType ()

ส่งกลับชนิดข้อมูลของบัฟเฟอร์นี้

สาธารณะ int getFlatSize ()

รับค่า flatSize ของบัฟเฟอร์

ขว้าง
IllegalStateException หากข้อมูลพื้นฐานเสียหาย

นามธรรมสาธารณะลอย [] getFloatArray ()

ส่งกลับอาร์เรย์ทศนิยมของค่าที่เก็บไว้ในบัฟเฟอร์นี้ หากบัฟเฟอร์มีประเภทแตกต่างจากโฟลต ค่าจะถูกแปลงเป็นโฟลต ตัวอย่างเช่น ค่าใน TensorBufferUint8 จะถูกแปลงจาก uint8 เป็น float

นามธรรมสาธารณะลอย getFloatValue (int absIndex)

ส่งกลับค่าทศนิยมที่ดัชนีที่กำหนด หากบัฟเฟอร์มีประเภทแตกต่างจากโฟลต ค่าจะถูกแปลงเป็นโฟลต ตัวอย่างเช่น เมื่ออ่านค่าจาก TensorBufferUint8 ค่าจะถูกอ่านเป็น uint8 ก่อน จากนั้นจะถูกแปลงจาก uint8 เป็น float

 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);
 

พารามิเตอร์
ดัชนีเอบีเอส ดัชนีสัมบูรณ์ของค่าที่จะอ่าน

บทคัดย่อสาธารณะ int[] getIntArray ()

ส่งกลับอาร์เรย์ int ของค่าที่เก็บไว้ในบัฟเฟอร์นี้ หากบัฟเฟอร์มีประเภทแตกต่างจาก int ค่าจะถูกแปลงเป็น int และอาจสูญเสียความแม่นยำ ตัวอย่างเช่น เมื่อรับอาร์เรย์ int จาก TensorBufferFloat ที่มีค่า {400.32f, 23.04f} ผลลัพธ์จะเป็น {400, 23}

บทคัดย่อสาธารณะ int getIntValue (int absIndex)

ส่งกลับค่า int ที่ดัชนีที่กำหนด หากบัฟเฟอร์มีประเภทแตกต่างจาก int ค่าจะถูกแปลงเป็น int ตัวอย่างเช่น เมื่ออ่านค่าจาก TensorBufferFloat ค่าจะถูกอ่านเป็น float ก่อน จากนั้นจะถูกแปลงจาก float เป็น int อาจสูญเสียความแม่นยำ

 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.
 

พารามิเตอร์
ดัชนีเอบีเอส ดัชนีสัมบูรณ์ของค่าที่จะอ่าน

int สาธารณะ [] getShape ()

ได้รูปทรงปัจจุบัน (ส่งคืนสำเนาที่นี่เพื่อหลีกเลี่ยงการแก้ไขที่ไม่คาดคิด)

ขว้าง
IllegalStateException หากข้อมูลพื้นฐานเสียหาย

บทคัดย่อสาธารณะ int getTypeSize ()

ส่งกลับจำนวนไบต์ขององค์ประกอบเดียวในอาร์เรย์ ตัวอย่างเช่น บัฟเฟอร์ลอยจะส่งกลับ 4 และบัฟเฟอร์ไบต์จะส่งกลับ 1

บูลีนสาธารณะ isDynamic ()

ส่งคืนหาก TensorBuffer มีขนาดไดนามิก (สามารถปรับขนาดได้ตามต้องการ)

โมฆะสาธารณะที่เป็นนามธรรม loadArray (int[] src, int[] รูปร่าง)

โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้ด้วยรูปร่างเฉพาะ หากบัฟเฟอร์มีประเภทแตกต่างจาก int ค่าจะถูกแปลงเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และอาจสูญเสียความแม่นยำ ตัวอย่างเช่น การโหลดอาร์เรย์ int ที่มีค่า {400, -23} ลงใน TensorBufferUint8 ค่าจะถูกบีบไว้ที่ [0, 255] จากนั้นจึงแคสต์ไปที่ uint8 ด้วย {255, 0}

พารามิเตอร์
src อาร์เรย์ต้นทางที่จะโหลด
รูปร่าง รูปร่างของเทนเซอร์ที่ src เป็นตัวแทน
ขว้าง
NullPointerException ถ้า src เป็นโมฆะ
NullPointerException ถ้า shape เป็นโมฆะ
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากขนาดของอาร์เรย์ที่จะโหลดไม่ตรงกับรูปร่างที่ระบุ

โมฆะสาธารณะที่เป็นนามธรรม loadArray (float [] src, int [] รูปร่าง)

โหลดอาร์เรย์ float ลงในบัฟเฟอร์นี้ด้วยรูปร่างเฉพาะ หากบัฟเฟอร์มีประเภทแตกต่างจากโฟลต ค่าจะถูกแปลงเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และอาจสูญเสียความแม่นยำ ตัวอย่างเช่น การโหลดอาร์เรย์ float ลงใน TensorBufferUint8 ด้วยค่า {400.32f, -23.04f} ค่าจะถูกบีบไว้ที่ [0, 255] จากนั้นจึงแคสต์ไปที่ uint8 ด้วย {255, 0}

พารามิเตอร์
src อาร์เรย์ต้นทางที่จะโหลด
รูปร่าง รูปร่างของเทนเซอร์ที่ src เป็นตัวแทน
ขว้าง
NullPointerException ถ้า src เป็นโมฆะ
NullPointerException ถ้า shape เป็นโมฆะ
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากขนาดของอาร์เรย์ที่จะโหลดไม่ตรงกับรูปร่างที่ระบุ

โมฆะสาธารณะ loadArray (ลอย [] src)

โหลดอาร์เรย์ float ลงในบัฟเฟอร์นี้ หากบัฟเฟอร์มีประเภทแตกต่างจากโฟลต ค่าจะถูกแปลงเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และอาจสูญเสียความแม่นยำ ตัวอย่างเช่น การโหลดอาร์เรย์ float ลงใน TensorBufferUint8 ด้วยค่า {400.32f, -23.04f} ค่าจะถูกบีบไว้ที่ [0, 255] จากนั้นจึงแคสต์ไปที่ uint8 ด้วย {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 )

โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer นี้ ขนาดบัฟเฟอร์ต้องตรงกับขนาดแบนของ TensorBuffer นี้

การใช้วิธีนี้จะถือว่ารูปร่างของ buffer เหมือนกับรูปร่างของ TensorBuffer นี้ ดังนั้นขนาดของ buffer ( buffer.limit() ) ควรตรงกับขนาดแบนของ TensorBuffer นี้เสมอ สำหรับทั้งขนาดคงที่และไดนามิก TensorBuffer ใช้ loadBuffer(ByteBuffer, int[]) หาก buffer มีรูปร่างแตกต่างออกไป

สิ่งสำคัญ: บัฟเฟอร์ที่โหลดไว้เป็นข้อมูลอ้างอิง อย่าปรับเปลี่ยน เราไม่ได้สร้างสำเนาที่นี่สำหรับข้อกังวลด้านประสิทธิภาพ แต่หากจำเป็นต้องแก้ไข โปรดทำสำเนา

เพื่อประสิทธิภาพที่ดีที่สุด ให้โหลด ByteBuffer โดยตรงหรือ ByteBuffer ที่สนับสนุนโดยอาร์เรย์เสมอ

หาก buffer เป็นแบบอ่านอย่างเดียว เราจะใช้กลยุทธ์การคัดลอกเมื่อเขียนเพื่อประสิทธิภาพ

พารามิเตอร์
กันชน บัฟเฟอร์ไบต์ที่จะโหลด

โมฆะสาธารณะ loadBuffer (บัฟเฟอร์ ByteBuffer รูปร่าง int [])

โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer นี้ด้วยรูปร่างเฉพาะ

สิ่งสำคัญ: บัฟเฟอร์ที่โหลดไว้เป็นข้อมูลอ้างอิง อย่าปรับเปลี่ยน เราไม่ได้สร้างสำเนาที่นี่สำหรับข้อกังวลด้านประสิทธิภาพ แต่หากจำเป็นต้องแก้ไข โปรดทำสำเนา

เพื่อประสิทธิภาพที่ดีที่สุด ให้โหลด ByteBuffer โดยตรงหรือ ByteBuffer ที่สนับสนุนโดยอาร์เรย์เสมอ

พารามิเตอร์
กันชน บัฟเฟอร์ไบต์ที่จะโหลด
รูปร่าง
ขว้าง
NullPointerException ถ้า buffer เป็นโมฆะ
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย ถ้าขนาดของ buffer และ typeSize ไม่ตรงกัน หรือขนาดของ buffer และ flatSize ไม่ตรงกัน