TensorBuffer

публичный абстрактный класс TensorBuffer
Известные прямые подклассы

Представляет буфер данных для входных или выходных данных модели.

Публичные методы

статический тензорный буфер
createDynamic (Тип данныхТип данных)
Создает пустой динамический TensorBuffer с указанным DataType .
статический тензорный буфер
createFixedSize (форма int[], DataType dataType)
Создает TensorBuffer с указанной shape и DataType .
статический тензорный буфер
createFrom (буфер TensorBuffer , тип данных DataType )
Создает TensorBuffer глубокого копирования данных из другого с указанным DataType .
Байтбуфер
получитьбуфер ()
Возвращает буфер данных.
абстрактный тип данных
получитьТипДанных ()
Возвращает тип данных этого буфера.
интервал
getFlatSize ()
Получает FlatSize буфера.
абстрактное число с плавающей запятой[]
getFloatArray ()
Возвращает массив значений с плавающей запятой, хранящихся в этом буфере.
абстрактный поплавок
getFloatValue (int absIndex)
Возвращает значение с плавающей запятой по заданному индексу.
абстрактный int[]
получитьИнтАррай ()
Возвращает массив значений, хранящихся в этом буфере.
абстрактный int
getIntValue (int absIndex)
Возвращает значение int по заданному индексу.
интервал []
получитьШейп ()
Получает текущую форму.
абстрактный int
получитьТипРазмер ()
Возвращает количество байтов одного элемента массива.
логическое значение
isDynamic ()
Возвращает, если TensorBuffer имеет динамический размер (размер может изменяться произвольно).
абстрактная пустота
loadArray (int[] src, int[] форма)
Загружает в этот буфер массив int определенной формы.
абстрактная пустота
loadArray (float[] src, int[] форма)
Загружает в этот буфер массив с плавающей запятой определенной формы.
пустота
loadArray (источник с плавающей точкой [])
Загружает массив с плавающей запятой в этот буфер.
пустота
loadArray (int[] источник)
Загружает массив int в этот буфер.
пустота
loadBuffer (буфер ByteBuffer )
Загружает буфер байтов в этот TensorBuffer .
пустота
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 .
Броски
Исключение нулевого указателя если shape равна нулю.
IllegalArgumentException если shape имеет неположительные элементы.

public static TensorBuffer createFrom (буфер TensorBuffer , DataType dataType)

Создает TensorBuffer глубокого копирования данных из другого с указанным DataType .

Параметры
буфер исходный TensorBuffer для копирования.
тип данных ожидаемый DataType вновь созданного TensorBuffer .
Броски
Исключение нулевого указателя если buffer равен нулю.

общедоступный ByteBuffer getBuffer ()

Возвращает буфер данных.

общедоступный абстрактный тип данных getDataType ()

Возвращает тип данных этого буфера.

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 .
Броски
Исключение нулевого указателя если src имеет значение null.
Исключение нулевого указателя если shape равна нулю.
IllegalArgumentException если размер загружаемого массива не соответствует указанной форме.

общедоступный абстрактный void loadArray (float[] src, int[] shape)

Загружает в этот буфер массив с плавающей запятой определенной формы. Если тип буфера отличается от типа float, значения будут преобразованы в тип буфера перед загрузкой в ​​буфер, и может возникнуть потеря точности. Например, при загрузке массива с плавающей запятой в TensorBufferUint8 со значениями {400.32f, -23.04f} значения будут зафиксированы на [0, 255], а затем будут приведены к uint8 с помощью {255, 0}.

Параметры
источник Исходный массив для загрузки.
форма Форма тензора, который представляет src .
Броски
Исключение нулевого указателя если src имеет значение null.
Исключение нулевого указателя если 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 , поддерживаемый массивом.

Параметры
буфер Байтовый буфер для загрузки.
форма
Броски
Исключение нулевого указателя если buffer равен нулю.
IllegalArgumentException если размер buffer и typeSize не совпадают или размер buffer и flatSize не совпадают.