Известные прямые подклассы |
Представляет буфер данных для входных или выходных данных модели.
Публичные методы
статический тензорный буфер | createDynamic ( Тип данныхТип данных) Создает пустой динамический TensorBuffer с указанным DataType . |
статический тензорный буфер | createFixedSize (форма int[], DataType dataType) |
статический тензорный буфер | createFrom (буфер TensorBuffer , тип данных DataType ) Создает TensorBuffer для глубокого копирования данных из другого с указанным DataType . |
Байтбуфер | получитьбуфер () Возвращает буфер данных. |
абстрактный тип данных | получитьТипДанных () Возвращает тип данных этого буфера. |
интервал | getFlatSize () Получает FlatSize буфера. |
абстрактное число с плавающей запятой[] | getFloatArray () Возвращает массив значений с плавающей запятой, хранящихся в этом буфере. |
абстрактный поплавок | getFloatValue (int absIndex) Возвращает значение с плавающей запятой по заданному индексу. |
абстрактный int[] | получитьИнтАррай () Возвращает массив значений, хранящихся в этом буфере. |
абстрактный интервал | getIntValue (int absIndex) Возвращает значение int по заданному индексу. |
интервал [] | получитьШейп () Получает текущую форму. |
абстрактный интервал | получитьТипРазмер () Возвращает количество байтов одного элемента массива. |
логическое значение | isDynamic () Возвращает, если TensorBuffer имеет динамический размер (размер может изменяться произвольно). |
абстрактная пустота | loadArray (int[] src, int[] форма) Загружает в этот буфер массив int определенной формы. |
абстрактная пустота | loadArray (float[] src, int[] форма) Загружает в этот буфер массив с плавающей запятой определенной формы. |
пустота | loadArray (источник с плавающей запятой []) Загружает массив с плавающей запятой в этот буфер. |
пустота | loadArray (int[] источник) Загружает массив int в этот буфер. |
пустота | |
пустота | loadBuffer (буфер ByteBuffer , форма int[]) Загружает буфер байтов в этот TensorBuffer определенной формы. |
Унаследованные методы
Публичные методы
public static TensorBuffer createDynamic ( DataType 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 имеет неположительные элементы. |
public static TensorBuffer createFrom (буфер TensorBuffer , DataType dataType)
Создает TensorBuffer
для глубокого копирования данных из другого с указанным DataType
.
Параметры
буфер | исходный TensorBuffer для копирования. |
---|---|
тип данных | ожидаемый DataType вновь созданного TensorBuffer . |
Броски
NullPointerException | если buffer равен нулю. |
---|
public int getFlatSize ()
Получает FlatSize буфера.
Броски
IllegalStateException | если базовые данные повреждены |
---|
общедоступный абстрактный float[] getFloatArray ()
Возвращает массив значений с плавающей запятой, хранящихся в этом буфере. Если тип буфера отличается от типа float, значения будут преобразованы в тип float. Например, значения в TensorBufferUint8
будут преобразованы из uint8 в float.
общедоступный абстрактный float getFloatValue (int absIndex)
Возвращает значение с плавающей запятой по заданному индексу. Если тип буфера отличается от типа float, значение будет преобразовано в тип float. Например, при чтении значения из 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);
Параметры
абсиндекс | Абсолютный индекс считываемого значения. |
---|
публичный абстрактный int[] getIntArray ()
Возвращает массив значений, хранящихся в этом буфере. Если тип буфера отличается от типа int, значения будут преобразованы в int, и может возникнуть потеря точности. Например, при получении массива int из TensorBufferFloat
со значениями {400.32f, 23.04f} выходные данные будут {400, 23}.
общедоступный абстрактный 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.
Параметры
абсИндекс | Абсолютный индекс считываемого значения. |
---|
public int[] getShape ()
Получает текущую форму. (возвращаем копию сюда, чтобы избежать непредвиденных изменений.)
Броски
IllegalStateException | если базовые данные повреждены |
---|
общедоступный абстрактный int getTypeSize ()
Возвращает количество байтов одного элемента массива. Например, буфер с плавающей точкой вернет 4, а буфер байтов — 1.
общедоступное логическое значение isDynamic ()
Возвращает, если TensorBuffer
имеет динамический размер (размер может изменяться произвольно).
общедоступный абстрактный void loadArray (int[] src, int[] shape)
Загружает в этот буфер массив int определенной формы. Если тип буфера отличается от типа int, значения будут преобразованы в тип буфера перед загрузкой в буфер, и может возникнуть потеря точности. Например, при загрузке массива int со значениями {400, -23} в TensorBufferUint8
значения будут ограничены до [0, 255], а затем будут приведены к uint8 с помощью {255, 0}.
Параметры
источник | Исходный массив для загрузки. |
---|---|
форма | Форма тензора, который представляет src . |
Броски
NullPointerException | если src имеет значение null. |
---|---|
NullPointerException | если shape равна нулю. |
IllegalArgumentException | если размер загружаемого массива не соответствует указанной форме. |
общедоступный абстрактный void loadArray (float[] src, int[] shape)
Загружает в этот буфер массив с плавающей запятой определенной формы. Если тип буфера отличается от типа float, значения будут преобразованы в тип буфера перед загрузкой в буфер, и может возникнуть потеря точности. Например, при загрузке массива с плавающей запятой в TensorBufferUint8
со значениями {400.32f, -23.04f} значения будут зафиксированы на [0, 255], а затем будут приведены к uint8 с помощью {255, 0}.
Параметры
источник | Исходный массив для загрузки. |
---|---|
форма | Форма тензора, который представляет src . |
Броски
NullPointerException | если src имеет значение null. |
---|---|
NullPointerException | если shape равна нулю. |
IllegalArgumentException | если размер загружаемого массива не соответствует указанной форме. |
public void loadArray (float[] src)
Загружает массив с плавающей запятой в этот буфер. Если тип буфера отличается от типа float, значения будут преобразованы в тип буфера перед загрузкой в буфер, и может возникнуть потеря точности. Например, при загрузке массива с плавающей запятой в TensorBufferUint8
со значениями {400.32f, -23.04f} значения будут ограничены до [0, 255], а затем будут преобразованы в uint8 по {255, 0}.
Использование этого метода предполагает, что форма src
такая же, как форма этого TensorBuffer
. Таким образом, размер buffer
( src.length
) всегда должен соответствовать плоскому размеру этого TensorBuffer
как для фиксированного размера, так и для динамического TensorBuffer
. Используйте loadArray(float[], int[])
если src
имеет другую форму.
Параметры
источник | Исходный массив для загрузки. |
---|
public 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
имеет другую форму.
Параметры
источник | Исходный массив для загрузки. |
---|
public void loadBuffer (буфер ByteBuffer )
Загружает буфер байтов в этот TensorBuffer
. Размер буфера должен соответствовать размеру этого TensorBuffer
.
Использование этого метода предполагает, что форма buffer
такая же, как форма этого TensorBuffer
. Таким образом, размер buffer
( buffer.limit()
) всегда должен соответствовать плоскому размеру этого TensorBuffer
как для фиксированного размера, так и для динамического TensorBuffer
. Используйте loadBuffer(ByteBuffer, int[])
если buffer
имеет другую форму.
Важно: Загруженный буфер является ссылкой. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.
Для достижения наилучшей производительности всегда загружайте прямой ByteBuffer
или ByteBuffer
поддерживаемый массивом.
Если buffer
доступен только для чтения, для повышения производительности мы применяем стратегию копирования при записи.
Параметры
буфер | Байтовый буфер для загрузки. |
---|
public void loadBuffer (буфер ByteBuffer , форма int[])
Загружает буфер байтов в этот TensorBuffer
определенной формы.
Важно: Загруженный буфер является ссылкой. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.
Для достижения наилучшей производительности всегда загружайте прямой ByteBuffer
или ByteBuffer
поддерживаемый массивом.
Параметры
буфер | Байтовый буфер для загрузки. |
---|---|
форма |
Броски
NullPointerException | если buffer равен нулю. |
---|---|
IllegalArgumentException | если размер buffer и typeSize не совпадают или размер buffer и flatSize не совпадают. |