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 | |
tĩnh TensorBuffer |
createFixedSize(int[] shape, DataType dataType)
|
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 | |
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 TensorBuffer
có shape
và DataType
đượ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 đá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 buffer và typeSize không
hoặc kích thước của buffer và flatSize không khớp.
|