TensorBuffer

lớp trừu tượng công khai TensorBuffer
Các lớp con trực tiếp đã biết

Biểu thị bộ đệm dữ liệu cho đầu vào hoặc đầu ra của mô hình.

Phương pháp công khai

Bộ đệm Tensor tĩnh
createDynamic ( DataType dataType)
Tạo một TensorBuffer động trống với DataType được chỉ định.
Bộ đệm Tensor tĩnh
createFixedSize (hình int[], Kiểu dữ liệu kiểu dữ liệu)
Tạo một TensorBuffer với shapeDataType được chỉ định.
Bộ đệm Tensor tĩnh
createFrom (Bộ đệm TensorBuffer , Kiểu dữ liệu DataType )
Tạo dữ liệu sao chép sâu TensorBuffer từ dữ liệu khác, với DataType được chỉ định.
Bộ đệm byte
getBuffer ()
Trả về bộ đệm dữ liệu.
kiểu dữ liệu trừu tượng
getDataType ()
Trả về kiểu dữ liệu của bộ đệm này.
int
getFlatSize ()
Lấy kích thước phẳng của bộ đệm.
phao trừu tượng[]
getFloatArray ()
Trả về một mảng float gồm các giá trị được lưu trữ trong bộ đệm này.
phao trừu tượng
getFloatValue (int absIndex)
Trả về giá trị float tại một chỉ mục nhất định.
trừu tượng int[]
getIntArray ()
Trả về một mảng int gồm các giá trị được lưu trong bộ đệm này.
int trừu tượng
getIntValue (int absIndex)
Trả về giá trị int tại một chỉ mục nhất định.
int[]
getShape ()
Có được hình dạng hiện tại.
int trừu tượng
getTypeSize ()
Trả về số byte của một phần tử trong mảng.
boolean
làDynamic ()
Trả về nếu TensorBuffer có kích thước động (có thể thay đổi kích thước tùy ý).
khoảng trống trừu tượng
LoadArray (int[] src, int[] hình dạng)
Tải một mảng int vào bộ đệm này với hình dạng cụ thể.
khoảng trống trừu tượng
LoadArray (hình float[] src, int[])
Tải một mảng float vào bộ đệm này với hình dạng cụ thể.
trống rỗng
tảiArray (float[] src)
Tải một mảng float vào bộ đệm này.
trống rỗng
tảiArray (int[] src)
Tải một mảng int vào bộ đệm này.
trống rỗng
LoadBuffer (bộ đệm ByteBuffer )
Tải bộ đệm byte vào TensorBuffer này.
trống rỗng
LoadBuffer (Bộ đệm ByteBuffer , hình dạng int[])
Tải bộ đệm byte vào TensorBuffer này với hình dạng cụ thể.

Phương pháp kế thừa

Phương pháp công khai

TensorBuffer tĩnh công khai createDynamic ( DataType dataType)

Tạo một TensorBuffer động trống với DataType được chỉ định. Hình dạng của TensorBuffer đã tạo là {0}.

TensorBuffers động sẽ phân bổ lại bộ nhớ khi tải mảng hoặc bộ đệm dữ liệu có kích thước bộ đệm khác nhau. Dưới đây là một số ví dụ:

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

Thông số
loại dữ liệu Kiểu dữ liệu của TensorBuffer sẽ được tạo.

tĩnh công khai TensorBuffer createFixedSize (hình int[], DataType dataType)

Tạo một TensorBuffer với shapeDataType được chỉ định. Dưới đây là một số ví dụ:

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

Kích thước của TensorBuffer có kích thước cố định không thể thay đổi sau khi được tạo.

Thông số
hình dạng Hình dạng của TensorBuffer sẽ được tạo.
loại dữ liệu Kiểu dữ liệu của TensorBuffer sẽ được tạo.
Ném
NullPointerNgoại lệ nếu shape là null.
Ngoại lệ Đối số bất hợp pháp nếu shape có các yếu tố không tích cực.

công khai tĩnh TensorBuffer createFrom (Bộ đệm TensorBuffer , DataType dataType)

Tạo dữ liệu sao chép sâu TensorBuffer từ dữ liệu khác, với DataType được chỉ định.

Thông số
đệm TensorBuffer nguồn để sao chép từ đó.
loại dữ liệu DataType dự kiến ​​của TensorBuffer mới được tạo.
Ném
NullPointerNgoại lệ nếu buffer là null.

getBuffer ByteBuffer công khai ()

Trả về bộ đệm dữ liệu.

DataType trừu tượng công khai getDataType ()

Trả về kiểu dữ liệu của bộ đệm này.

int công khai getFlatSize ()

Lấy kích thước phẳng của bộ đệm.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu dữ liệu cơ bản bị hỏng

float trừu tượng công khai[] getFloatArray ()

Trả về một mảng float gồm các giá trị được lưu trữ trong bộ đệm này. Nếu bộ đệm có kiểu khác với float thì các giá trị sẽ được chuyển thành float. Ví dụ: các giá trị trong TensorBufferUint8 sẽ được chuyển đổi từ uint8 sang float.

float trừu tượng công khai getFloatValue (int absIndex)

Trả về giá trị float tại một chỉ mục nhất định. Nếu bộ đệm có kiểu khác với float thì giá trị sẽ được chuyển thành float. Ví dụ: khi đọc một giá trị từ TensorBufferUint8 , giá trị đầu tiên sẽ được đọc dưới dạng uint8 và sau đó sẽ được chuyển đổi từ uint8 thành 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);
 

Thông số
chỉ số cơ bụng Chỉ số tuyệt đối của giá trị cần đọc.

tóm tắt công khai int[] getIntArray ()

Trả về một mảng int gồm các giá trị được lưu trong bộ đệm này. Nếu bộ đệm có loại khác với int, các giá trị sẽ được chuyển đổi thành int và có thể mất độ chính xác. Ví dụ: lấy một mảng int từ TensorBufferFloat với các giá trị {400,32f, 23,04f}, đầu ra là {400, 23}.

tóm tắt công khai int getIntValue (int absIndex)

Trả về giá trị int tại một chỉ mục nhất định. Nếu bộ đệm có kiểu khác với int thì giá trị sẽ được chuyển đổi thành int. Ví dụ: khi đọc một giá trị từ TensorBufferFloat , giá trị đầu tiên sẽ được đọc dưới dạng float và sau đó sẽ được chuyển đổi từ float sang int. Mất độ chính xác có thể áp dụng.

 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.
 

Thông số
chỉ số cơ bụng Chỉ số tuyệt đối của giá trị cần đọc.

int công khai[] getShape ()

Có được hình dạng hiện tại. (trả lại một bản sao ở đây để tránh sửa đổi không mong muốn.)

Ném
Ngoại lệ nhà nước bất hợp pháp nếu dữ liệu cơ bản bị hỏng

tóm tắt công khai int getTypeSize ()

Trả về số byte của một phần tử trong mảng. Ví dụ: bộ đệm float sẽ trả về 4 và bộ đệm byte sẽ trả về 1.

boolean công khai isDynamic ()

Trả về nếu TensorBuffer có kích thước động (có thể thay đổi kích thước tùy ý).

trừu tượng công khai void tảiArray (int[] src, int[] hình)

Tải một mảng int vào bộ đệm này với hình dạng cụ thể. Nếu bộ đệm có loại khác với int, các giá trị sẽ được chuyển đổi thành loại của bộ đệm trước khi được tải vào bộ đệm và có thể mất độ chính xác. Ví dụ: tải một mảng int có các giá trị {400, -23} vào TensorBufferUint8 , các giá trị sẽ được gắn vào [0, 255] và sau đó được chuyển thành uint8 bởi {255, 0}.

Thông số
src Mảng nguồn cần được tải.
hình dạng Hình dạng của tensor mà src đại diện.
Ném
NullPointerNgoại lệ nếu src là null.
NullPointerNgoại lệ nếu shape là null.
Ngoại lệ Đối số bất hợp pháp nếu kích thước của mảng được tải không khớp với hình dạng đã chỉ định.

trừu tượng công khai void tảiArray (hình float[] src, int[])

Tải một mảng float vào bộ đệm này với hình dạng cụ thể. Nếu bộ đệm có loại khác với float, các giá trị sẽ được chuyển đổi thành loại của bộ đệm trước khi được tải vào bộ đệm và có thể mất độ chính xác. Ví dụ: tải một mảng float vào TensorBufferUint8 với các giá trị {400.32f, -23.04f}, các giá trị sẽ được gắn vào [0, 255] và sau đó được chuyển thành uint8 bởi {255, 0}.

Thông số
src Mảng nguồn cần được tải.
hình dạng Hình dạng của tensor mà src đại diện.
Ném
NullPointerNgoại lệ nếu src là null.
NullPointerNgoại lệ nếu shape là null.
Ngoại lệ Đối số bất hợp pháp nếu kích thước của mảng được tải không khớp với hình dạng đã chỉ định.

public void LoadArray (float[] src)

Tải một mảng float vào bộ đệm này. Nếu bộ đệm có loại khác với float, các giá trị sẽ được chuyển đổi thành loại của bộ đệm trước khi được tải vào bộ đệm và có thể mất độ chính xác. Ví dụ: tải một mảng float vào TensorBufferUint8 với các giá trị {400.32f, -23.04f}, các giá trị sẽ được gắn vào [0, 255] và sau đó được chuyển thành uint8 bởi {255, 0}.

Sử dụng phương pháp này giả định rằng hình dạng của src giống với hình dạng của TensorBuffer này. Do đó, kích thước của buffer ( src.length ) phải luôn khớp với kích thước phẳng của TensorBuffer này, cho cả TensorBuffer kích thước cố định và TensorBuffer động. Sử dụng loadArray(float[], int[]) nếu src có hình dạng khác.

Thông số
src Mảng nguồn cần được tải.

public void LoadArray (int[] src)

Tải một mảng int vào bộ đệm này. Nếu bộ đệm có loại khác với int, các giá trị sẽ được chuyển đổi thành loại của bộ đệm trước khi được tải vào bộ đệm và có thể mất độ chính xác. Ví dụ: tải một mảng int có các giá trị {400, -23} vào TensorBufferUint8 , các giá trị sẽ được gắn vào [0, 255] và sau đó được chuyển thành uint8 bởi {255, 0}.

Sử dụng phương pháp này giả định rằng hình dạng của src giống với hình dạng của TensorBuffer này. Do đó, kích thước của buffer ( src.length ) phải luôn khớp với kích thước phẳng của TensorBuffer này, cho cả TensorBuffer kích thước cố định và TensorBuffer động. Sử dụng loadArray(int[], int[]) nếu src có hình dạng khác.

Thông số
src Mảng nguồn cần được tải.

public void LoadBuffer (Bộ đệm ByteBuffer )

Tải bộ đệm byte vào TensorBuffer này. Kích thước bộ đệm phải phù hợp với kích thước phẳng của TensorBuffer này.

Sử dụng phương pháp này giả định rằng hình dạng của buffer giống với hình dạng của TensorBuffer này. Do đó, kích thước của buffer ( buffer.limit() ) phải luôn khớp với kích thước phẳng của TensorBuffer này, cho cả TensorBuffer kích thước cố định và TensorBuffer động. Sử dụng loadBuffer(ByteBuffer, int[]) nếu buffer có hình dạng khác.

Quan trọng: Bộ đệm được tải là một tham chiếu. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Để có hiệu suất tốt nhất, hãy luôn tải ByteBuffer trực tiếp hoặc ByteBuffer được hỗ trợ bởi một mảng.

Nếu buffer ở chế độ chỉ đọc, chúng tôi sẽ áp dụng chiến lược sao chép khi ghi để tăng hiệu suất.

Thông số
đệm Bộ đệm byte để tải.

public void LoadBuffer (Bộ đệm ByteBuffer , hình dạng int[])

Tải bộ đệm byte vào TensorBuffer này với hình dạng cụ thể.

Quan trọng: Bộ đệm được tải là một tham chiếu. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Để có hiệu suất tốt nhất, hãy luôn tải ByteBuffer trực tiếp hoặc ByteBuffer được hỗ trợ bởi một mảng.

Thông số
đệm Bộ đệm byte để tải.
hình dạng
Ném
NullPointerNgoại lệ nếu buffer là null.
Ngoại lệ Đối số bất hợp pháp nếu kích thước của buffertypeSize không khớp hoặc kích thước của bufferflatSize không khớp.