TensorBuffer

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

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

Phương thức công khai

tĩnh TensorBuffer
createDynamic(DataType dataType)
Tạo một TensorBuffer động trống bằng DataType được chỉ định.
tĩnh TensorBuffer
createFixedSize(int[] shape, DataType dataType)
Tạo TensorBuffershapeDataType được chỉ định.
tĩnh TensorBuffer
createFrom(vùng đệm TensorBuffer, dataType DataType)
Tạo một dữ liệu sao chép sâu TensorBuffer từ một dữ liệu khác, với DataType được chỉ định.
ByteBuffer
getBuffer()
Trả về vùng đệm dữ liệu.
trừu tượng DataType
getDataType()
Trả về loại dữ liệu của vùng đệm này.
int
getFlatSize()
Lấy flatSize của vùng đệm.
trừu tượng float[]
getFloatArray()
Trả về một mảng dấu phẩy động của các giá trị được lưu trữ trong vùng đệm này.
trừu tượng độ chính xác đơn
getFloatValue(int absIndex)
Trả về một giá trị số thực tại một chỉ mục cho trước.
trừu tượng int[]
getIntArray()
Trả về một mảng int của các giá trị được lưu trữ trong vùng đệm này.
trừu tượng đánh chặn
getIntValue(int absIndex)
Trả về giá trị int tại một chỉ mục nhất định.
int[]
getShape()
Lấy hình dạng hiện tại.
trừu tượng đánh chặn
getTypeSize()
Trả về số byte của một phần tử trong mảng.
boolean
isDynamic()
Trả về nếu TensorBuffer có kích thước động (có thể thay đổi kích thước tuỳ ý).
trừu tượng trống
loadArray(int[] src, int[] hình)
Tải một mảng int vào vùng đệm này với hình dạng cụ thể.
trừu tượng trống
loadArray(float[] src, hình dạng int[])
Tải một mảng nổi vào vùng đệm này với hình dạng cụ thể.
void
loadArray(float[] src)
Tải một mảng nổi vào vùng đệm này.
void
loadArray(int[] src)
Tải một mảng int vào vùng đệm này.
void
loadBuffer(vùng đệm ByteBuffer)
Tải một vùng đệm byte vào TensorBuffer này.
void
loadBuffer(vùng đệm ByteBuffer, hình dạng int[])
Tải một vùng đệm byte vào TensorBuffer này với hình dạng cụ thể.

Phương thức kế thừa

Phương thức công khai

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

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

Dynamic TensorBuffers sẽ phân bổ lại bộ nhớ khi tải các mảng hoặc vùng đệm dữ liệu của kích thước bộ nhớ đệ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.
 

Tham số
dataType Loại dữ liệu của TensorBuffer sẽ được tạo.

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

Tạo TensorBuffershapeDataType được chỉ định. Sau đâ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);
 

Sau khi tạo, bạn không thể thay đổi kích thước của TensorBuffer có kích thước cố định.

Tham số
hình dạng Hình dạng của TensorBuffer sẽ được tạo.
dataType Loại dữ liệu của TensorBuffer sẽ được tạo.
Gửi
NullPointerException nếu shape rỗng.
IllegalArgumentException nếu shape chứa các phần tử không dương.

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

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

Tham số
bộ đệm nguồn TensorBuffer để sao chép.
dataType DataType dự kiến của TensorBuffer mới tạo.
Gửi
NullPointerException nếu buffer rỗng.

công khai ByteBuffer getBuffer ()

Trả về vùng đệm dữ liệu.

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

Trả về loại dữ liệu của vùng đệm này.

công khai đánh chặn getFlatSize ()

Lấy flatSize của vùng đệm.

Gửi
IllegalStateException nếu dữ liệu cơ bản bị hỏng

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

Trả về một mảng dấu phẩy động của các giá trị được lưu trữ trong vùng đệm này. Nếu vùng đệm thuộc các loại khác nhau hơn số thực có độ chính xác đơn, thì các giá trị sẽ được chuyển đổi thành độ chính xác đơn. Ví dụ: các giá trị trong TensorBufferUint8 sẽ được chuyển đổi từ uint8 sang số thực có độ chính xác đơn.

công khai trừu tượng độ chính xác đơn getFloatValue (int absIndex)

Trả về một giá trị số thực tại một chỉ mục cho trước. Nếu vùng đệm thuộc loại khác với loại có độ chính xác đơn, thì hàm giá trị sẽ được chuyển đổi thành số thực. Ví dụ: khi đọc một giá trị từ TensorBufferUint8, trước tiên, giá trị đó sẽ được đọc là uint8, sau đó sẽ được chuyển đổi từ uint8 thành số thực.

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

Tham số
absIndex Chỉ mục tuyệt đối của giá trị cần đọc.

công khai trừu tượng int[] getIntArray ()

Trả về một mảng int của các giá trị được lưu trữ trong vùng đệm này. Nếu vùng đệm thuộc loại khác hơn int, các giá trị sẽ được chuyển đổi thành int và có thể xảy ra tình trạng mất độ chính xác. Ví dụ: nhận một mảng int từ TensorBufferFloat có các giá trị {400.32f, 23.04f}, kết quả đầu ra là {400, 23}.

công khai trừu tượng đánh chặn getIntValue (int absIndex)

Trả về giá trị int tại một chỉ mục nhất định. Nếu vùng đệm thuộc loại khác với int, giá trị sẽ được chuyển đổi thành số nguyên. Ví dụ: khi đọc giá trị từ TensorBufferFloat, giá trị đầu tiên sẽ được đọc to dưới dạng số thực có độ chính xác đơn, sau đó sẽ được chuyển đổi từ số thực có độ chính xác đơn thành số nguyên. Mất có thể chính xác.

 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.
 

Tham số
absIndex Chỉ mục tuyệt đối của giá trị cần đọc.

công khai int[] getShape ()

Lấy hình dạng hiện tại. (trả lại bản sao tại đây để tránh việc sửa đổi không mong muốn.)

Gửi
IllegalStateException nếu dữ liệu cơ bản bị hỏng

công khai trừu tượng đánh chặn getTypeSize ()

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

công khai boolean isDynamic ()

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

công khai trừu tượng trống loadArray (int[] src, int[] shape)

Tải một mảng int vào vùng đệm này với hình dạng cụ thể. Nếu vùng đệm thuộc các loại khác nhau so với int, các giá trị sẽ được chuyển đổi thành loại vùng đệm trước khi được tải vào vùng đệ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 giới hạn với [0, 255] rồi truyền đến uint8 bởi {255, 0}.

Tham số
src Mảng nguồn cần được tải.
hình dạng Hình dạng của tensor mà src biểu thị.
Gửi
NullPointerException nếu src rỗng.
NullPointerException nếu shape rỗng.
IllegalArgumentException 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.

công khai trừu tượng trống loadArray (hình dạng src, int[])

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

Tham số
src Mảng nguồn cần được tải.
hình dạng Hình dạng của tensor mà src biểu thị.
Gửi
NullPointerException nếu src rỗng.
NullPointerException nếu shape rỗng.
IllegalArgumentException 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.

công khai trống loadArray (float[] src)

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

Sử dụng phương thức này giả định rằng hình dạng của src giống với hình dạng của TensorBuffer 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 động và kích thước cố định. Hãy sử dụng loadArray(float[], int[]) nếu src có hình dạng khác.

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

công khai trống loadArray (int[] src)

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

Sử dụng phương thức này giả định rằng hình dạng của src giống với hình dạng của TensorBuffer 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 động và kích thước cố định. Hãy sử dụng loadArray(int[], int[]) nếu src có hình dạng khác.

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

công khai trống loadBuffer (Vùng đệm ByteBuffer)

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

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

Quan trọng: Vùng đệm đã tải là một tệp tham chiếu. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây cho vấn đề về 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 hoặc ByteBuffer trực tiếp được một mảng hỗ trợ.

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

Tham số
bộ đệm Vùng đệm byte cần tải.

công khai trống loadBuffer (Vùng đệm ByteBuffer, hình dạng int[])

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

Quan trọng: Vùng đệm đã tải là một tệp tham chiếu. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây cho vấn đề về 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 hoặc ByteBuffer trực tiếp được một mảng hỗ trợ.

Tham số
bộ đệm Vùng đệm byte cần tải.
hình dạng
Gửi
NullPointerException nếu buffer rỗng.
IllegalArgumentException nếu kích thước của buffertypeSize không hoặc kích thước của bufferflatSize không khớp.