TensorBuffer

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

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

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

คงที่ TensorBuffer
createDynamic(ประเภทข้อมูล DataType)
สร้าง TensorBuffer แบบไดนามิกที่ว่างเปล่าโดยระบุ DataType
คงที่ TensorBuffer
createFixedSize(int[] รูปร่าง, DataType dataType)
สร้าง TensorBuffer ที่มี shape และ 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)
โหลดบัฟเฟอร์ 1 ไบต์ลงใน TensorBuffer นี้
เป็นโมฆะ
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 เป็นค่าว่าง

สาธารณะ ByteBuffer getBuffer ()

แสดงผลบัฟเฟอร์ข้อมูล

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

แสดงผลประเภทข้อมูลของบัฟเฟอร์นี้

สาธารณะ 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

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

แสดงผลหาก TensorBuffer มีขนาดแบบไดนามิก (สามารถปรับขนาดได้ตามต้องการ)

สาธารณะ นามธรรม เป็นโมฆะ 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 ไม่ตรงกัน