คลาสย่อยโดยตรงที่รู้จัก |
แสดงบัฟเฟอร์ข้อมูลสำหรับอินพุตของโมเดลหรือเอาต์พุตของโมเดล
วิธีการสาธารณะ
TensorBuffer แบบคงที่ |
createDynamic(ประเภทข้อมูล DataType)
สร้าง
TensorBuffer แบบไดนามิกที่ว่างเปล่าซึ่งมี DataType ที่ระบุ |
TensorBuffer แบบคงที่ |
createFixedSize(int[] รูปร่าง DataType dataType)
|
TensorBuffer แบบคงที่ |
createFrom(บัฟเฟอร์ TensorBuffer, ประเภทข้อมูล DataType)
สร้างข้อมูล
TensorBuffer แบบคัดลอกเชิงลึกจากอีกข้อมูลหนึ่งที่ระบุ DataType |
ByteBuffer |
getBuffer()
แสดงผลบัฟเฟอร์ข้อมูล
|
นามธรรม DataType |
getDataType()
แสดงผลประเภทข้อมูลของบัฟเฟอร์นี้
|
int |
getFlatSize()
รับขนาด FlatSize ของบัฟเฟอร์
|
นามธรรม ลอย[] |
getFloatArray()
แสดงผลอาร์เรย์ Float ของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้
|
นามธรรม ลอย |
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[])
โหลดอาร์เรย์แบบลอยลงในบัฟเฟอร์นี้ด้วยรูปร่างที่เฉพาะเจาะจง
|
void |
loadArray(Float[] src)
โหลดอาร์เรย์ Float ลงในบัฟเฟอร์นี้
|
void |
loadArray(int[] src)
โหลดอาร์เรย์ Int ลงในบัฟเฟอร์นี้
|
void | |
void |
loadBuffer(บัฟเฟอร์ ByteBuffer, รูปร่าง int[])
โหลดบัฟเฟอร์ไบต์ลงใน
TensorBuffer นี้ด้วยรูปร่างที่เฉพาะเจาะจง |
วิธีการที่รับช่วงมา
วิธีการสาธารณะ
สาธารณะ คงที่ TensorBuffer createDynamic (DataType dataType)
สร้าง TensorBuffer
แบบไดนามิกที่ว่างเปล่าซึ่งมี DataType
ที่ระบุ รูปร่างของ TensorBuffer
ที่สร้างขึ้นคือ {0}
TensorBuffer แบบไดนามิกจะจัดสรรหน่วยความจำใหม่เมื่อโหลดอาร์เรย์หรือบัฟเฟอร์ข้อมูลขนาดบัฟเฟอร์ที่แตกต่างกัน ลองดูตัวอย่างต่อไปนี้
// 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[] Shape, 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 ()
แสดงผลอาร์เรย์ Float ของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้ หากบัฟเฟอร์เป็นคนละประเภทกับแบบลอย ระบบจะแปลงค่าเป็นแบบลอย เช่น ค่าใน 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);
พารามิเตอร์
absIndex | ดัชนีสัมบูรณ์ของค่าที่จะอ่าน |
---|
สาธารณะ นามธรรม int[] getIntArray ()
แสดงผลอาร์เรย์ int ของค่าที่จัดเก็บไว้ในบัฟเฟอร์นี้ หากบัฟเฟอร์เป็นชนิดอื่นที่ไม่ใช่ int ระบบจะแปลงค่าเป็น int และอาจต้องสูญเสียความแม่นยำ ตัวอย่างเช่น หากรับอาร์เรย์ int จาก TensorBufferFloat
ที่มีค่า {400.32f, 23.04f} เอาต์พุตจะเป็น {400, 23}
Public abstract 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.
พารามิเตอร์
absIndex | ดัชนีสัมบูรณ์ของค่าที่จะอ่าน |
---|
สาธารณะ int[] getShape ()
รับรูปร่างปัจจุบัน (แสดงผลสำเนาที่นี่เพื่อหลีกเลี่ยงการแก้ไขที่ไม่คาดคิด)
การขว้าง
IllegalStateException | หากข้อมูลสำคัญเสียหาย |
---|
สาธารณะ นามธรรม int getTypeSize ()
แสดงผลจำนวนไบต์ขององค์ประกอบเดี่ยวในอาร์เรย์ เช่น บัฟเฟอร์แบบลอยจะแสดงผล 4 และบัฟเฟอร์แบบไบต์จะแสดงผล 1
สาธารณะ นามธรรม โมฆะ loadArray (int[] src, int[] Shape)
โหลดอาร์เรย์ int ลงในบัฟเฟอร์นี้ด้วยรูปร่างที่ระบุ หากบัฟเฟอร์เป็นชนิดอื่นที่ไม่ใช่ int ระบบจะแปลงค่าเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และอาจสูญเสียความแม่นยำ เช่น เมื่อโหลดอาร์เรย์ int ที่มีค่า {400, -23} ลงใน TensorBufferUint8
ค่าจะถูกบีบเป็น [0, 255] จากนั้นจะแคสต์ไปยัง uint8 ภายในวันที่ {255, 0}
พารามิเตอร์
src | อาร์เรย์ต้นทางที่จะโหลด |
---|---|
รูปร่าง | รูปร่างของ Tensor ที่ src แสดง |
การขว้าง
NullPointerException | หาก src เป็นค่าว่าง |
---|---|
NullPointerException | หาก shape เป็นค่าว่าง |
IllegalArgumentException | หากขนาดของอาร์เรย์ที่โหลดไม่ตรงกับรูปร่างที่ระบุ |
สาธารณะ นามธรรม โมฆะ loadArray (Float[] src, int[] Shape)
โหลดอาร์เรย์แบบลอยลงในบัฟเฟอร์นี้ด้วยรูปร่างที่เฉพาะเจาะจง หากบัฟเฟอร์เป็นชนิดอื่นที่ไม่ใช่แบบลอย ระบบจะแปลงค่าเป็นประเภทของบัฟเฟอร์ก่อนที่จะโหลดลงในบัฟเฟอร์ และอาจสูญเสียความแม่นยำ เช่น การโหลดอาร์เรย์ Float ลงใน TensorBufferUint8
ที่มีค่า {400.32f, -23.04f} ค่าจะถูกปรับให้เป็น [0, 255] จากนั้นจะแคสต์ไปยัง uint8 ภายในวันที่ {255, 0}
พารามิเตอร์
src | อาร์เรย์ต้นทางที่จะโหลด |
---|---|
รูปร่าง | รูปร่างของ Tensor ที่ src แสดง |
การขว้าง
NullPointerException | หาก src เป็นค่าว่าง |
---|---|
NullPointerException | หาก shape เป็นค่าว่าง |
IllegalArgumentException | หากขนาดของอาร์เรย์ที่โหลดไม่ตรงกับรูปร่างที่ระบุ |
สาธารณะ void loadArray (Float[] 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 | อาร์เรย์ต้นทางที่จะโหลด |
---|
สาธารณะ void 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 | อาร์เรย์ต้นทางที่จะโหลด |
---|
สาธารณะ void loadBuffer (บัฟเฟอร์ ByteBuffer)
โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer
นี้ ขนาดบัฟเฟอร์ต้องตรงกับขนาดคงที่ของ TensorBuffer
นี้
การใช้เมธอดนี้จะถือว่ารูปร่างของ buffer
เหมือนกับรูปร่างของ TensorBuffer
นี้ ดังนั้นขนาดของ buffer
(buffer.limit()
) ควรตรงกับขนาดคงที่ของ TensorBuffer
นี้เสมอ สำหรับทั้งขนาดคงที่และ TensorBuffer
แบบไดนามิก ใช้ loadBuffer(ByteBuffer, int[])
หาก buffer
มีรูปทรงอื่น
สำคัญ: บัฟเฟอร์ที่โหลดคือการอ้างอิง โปรดอย่าแก้ไข เราไม่สร้างสำเนาที่นี่เนื่องจากข้อกังวลด้านประสิทธิภาพ แต่หากจำเป็นต้องแก้ไข โปรดทำสำเนาไว้
โหลด ByteBuffer
โดยตรงหรือ ByteBuffer
ที่มาจากอาร์เรย์เสมอเพื่อประสิทธิภาพที่ดีที่สุด
หาก buffer
เป็นแบบอ่านอย่างเดียว เราจะใช้กลยุทธ์คัดลอกเขียนเพื่อเพิ่มประสิทธิภาพ
พารามิเตอร์
บัฟเฟอร์ | บัฟเฟอร์ไบต์ที่จะโหลด |
---|
สาธารณะ void loadBuffer (บัฟเฟอร์ ByteBuffer, รูปร่าง int[])
โหลดบัฟเฟอร์ไบต์ลงใน TensorBuffer
นี้ด้วยรูปร่างที่เฉพาะเจาะจง
สำคัญ: บัฟเฟอร์ที่โหลดคือการอ้างอิง โปรดอย่าแก้ไข เราไม่สร้างสำเนาที่นี่เนื่องจากข้อกังวลด้านประสิทธิภาพ แต่หากจำเป็นต้องแก้ไข โปรดทำสำเนาไว้
โหลด ByteBuffer
โดยตรงหรือ ByteBuffer
ที่มาจากอาร์เรย์เสมอเพื่อประสิทธิภาพที่ดีที่สุด
พารามิเตอร์
บัฟเฟอร์ | บัฟเฟอร์ไบต์ที่จะโหลด |
---|---|
รูปร่าง |
การขว้าง
NullPointerException | หาก buffer เป็นค่าว่าง |
---|---|
IllegalArgumentException | หากขนาดของ buffer และ typeSize ไม่ตรงกัน หรือขนาดของ buffer และ flatSize ไม่ตรงกัน
|