TensorBuffer

publiczna klasa abstrakcyjna TensorBuffer
Znane podklasy bezpośrednie

Reprezentuje bufor danych na potrzeby danych wejściowych lub wyjściowych modelu.

Metody publiczne

statyczny TensorBuffer
createDynamic(DataType dataType)
Tworzy pusty dynamiczny element TensorBuffer z określonym atrybutem DataType.
statyczny TensorBuffer
createFixedSize(int[] shape, DataType dataType)
Tworzy element TensorBuffer z określonymi wartościami shape i DataType.
statyczny TensorBuffer
createFrom(bufor TensorBuffer, DataType)
Tworzy element TensorBuffer głęboko kopiujący dane z innego miejsca z określoną wartością DataType.
ByteBuffer
getBuffer(),
Zwraca bufor danych.
abstrakcyjny DataType
getDataType(),
Zwraca typ danych tego bufora.
int
getFlatSize().
Pobiera element FlaSize bufora.
abstrakcja float[]
getFloatArray()
Zwraca tablicę zmiennoprzecinkową wartości przechowywanych w tym buforze.
abstrakcyjny zmiennoprzecinkowy
getFloatValue(int absIndex)
Zwraca wartość zmiennoprzecinkową dla danego indeksu.
abstrakcja int[]
getIntArray()
Zwraca tablicę int wartości przechowywanych w tym buforze.
abstrakcja int
getIntValue(int absIndex)
Zwraca wartość typu int w danym indeksie.
int[]
getShape()
Pobiera bieżący kształt.
abstrakcja int
getTypeSize().
Zwraca liczbę bajtów pojedynczego elementu w tablicy.
boolean
isDynamic()
Zwraca, jeśli TensorBuffer ma dynamiczny rozmiar (można dowolnie zmienić rozmiar).
abstrakcja void
loadArray(int[] src, int[] shape)
Wczytuje tablicę int do tego bufora o określonym kształcie.
abstrakcja void
loadArray(float[] src, int[] shape)
Wczytuje do bufora tablicę zmiennoprzecinkową o określonym kształcie.
void
loadArray(float[] src)
Wczytuje tablicę zmiennoprzecinkową do tego bufora.
void
loadArray(int[] src)
Wczytuje tablicę int do tego bufora.
void
loadBuffer(bufor ByteBuffer)
Wczytuje bufor bajtów do tego urządzenia TensorBuffer.
void
loadBuffer(bufor ByteBuffer, kształt int[])
Wczytuje do tego elementu TensorBuffer bufor bajtów o określonym kształcie.

Metody dziedziczone

Metody publiczne

public static TensorBuffer createDynamic (DataType dataType)

Tworzy pusty dynamiczny element TensorBuffer z określonym atrybutem DataType. Kształt utworzonego elementu TensorBuffer to {0}.

Dynamiczne TensorBuffer ponownie alokują pamięć podczas wczytywania tablic lub buforów danych o różnych rozmiarach buforów. Oto przykłady:

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

Parametry
dataType Parametr dataType obiektu TensorBuffer, który ma zostać utworzony.

public static TensorBuffer createFixedSize (int[] shape, DataType dataType)

Tworzy element TensorBuffer z określonymi wartościami shape i DataType. Oto przykłady:

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

Po utworzeniu obiektu TensorBuffer o stałym rozmiarze nie można zmienić jego rozmiaru.

Parametry
kształt Kształt obiektu TensorBuffer do utworzenia.
dataType Parametr dataType obiektu TensorBuffer, który ma zostać utworzony.
Rzuty
NullPointerException jeśli shape ma wartość null.
IllegalArgumentException jeśli shape ma elementy niedodatnie.

public static TensorBuffer createFrom (TensorBuffer bufor, DataType)

Tworzy element TensorBuffer głęboko kopiujący dane z innego miejsca z określoną wartością DataType.

Parametry
bufor źródło TensorBuffer do skopiowania.
dataType oczekiwana wartość (DataType) nowo utworzonych elementów typu TensorBuffer.
Rzuty
NullPointerException jeśli buffer ma wartość null.

public ByteBuffer getBuffer ()

Zwraca bufor danych.

public abstract DataType getDataType ()

Zwraca typ danych tego bufora.

public int getFlatSize ()

Pobiera element FlaSize bufora.

Rzuty
IllegalStateException jeśli dane bazowe są uszkodzone;

public abstract float[] getFloatArray ()

Zwraca tablicę zmiennoprzecinkową wartości przechowywanych w tym buforze. Jeśli bufor jest innego typu niż liczba zmiennoprzecinkowa, wartości zostaną przekonwertowane na liczbę zmiennoprzecinkową. Na przykład wartości w polu TensorBufferUint8 zostaną przekonwertowane z uint8 na liczbę zmiennoprzecinkową.

public abstract float getFloatValue (int absIndex)

Zwraca wartość zmiennoprzecinkową dla danego indeksu. Jeśli bufor jest innego typu niż liczba zmiennoprzecinkowa, wartość zostanie przekonwertowana na liczbę zmiennoprzecinkową. Na przykład podczas odczytu wartości z funkcji TensorBufferUint8 zostanie ona najpierw odczytana jako uint8, a następnie zostanie przekonwertowana z uint8 na liczbę zmiennoprzecinkową.

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

Parametry
absIndex Indeks bezwzględny wartości do odczytania.

public abstract int[] getIntArray ()

Zwraca tablicę int wartości przechowywanych w tym buforze. Jeśli bufor jest innego typu niż int, wartości zostaną przekonwertowane na int, co może skutkować utratą dokładności. Jeśli na przykład pozyskasz tablicę int z obiektu TensorBufferFloat o wartościach {400.32f, 23.04f}, wynikiem będzie {400, 23}.

public abstract int getIntValue (int absIndex)

Zwraca wartość typu int w danym indeksie. Jeśli bufor jest innego typu niż int, wartość zostanie przekonwertowana na int. Na przykład podczas odczytu wartości z funkcji TensorBufferFloat wartość zostanie najpierw odczytana jako liczba zmiennoprzecinkowa, a następnie zostanie przekonwertowana ze liczby zmiennoprzecinkowej na int. Może wystąpić utrata dokładności.

 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.
 

Parametry
absIndex Indeks bezwzględny wartości do odczytania.

public int[] getShape ()

Pobiera bieżący kształt. (zwracanie kopii, aby uniknąć nieoczekiwanej modyfikacji).

Rzuty
IllegalStateException jeśli dane bazowe są uszkodzone;

public abstract int getTypeSize ()

Zwraca liczbę bajtów pojedynczego elementu w tablicy. Na przykład bufor zmiennoprzecinkowy zwróci wartość 4, a bufor bajtów – 1.

public boolean isDynamic ()

Zwraca, jeśli TensorBuffer ma dynamiczny rozmiar (można dowolnie zmienić rozmiar).

public abstract void loadArray (int[] src, int[] shape)

Wczytuje tablicę int do tego bufora o określonym kształcie. Jeśli bufor jest innego typu niż int, przed wczytaniem wartości zostaną przekonwertowane na typ bufora, co może spowodować utratę dokładności. Jeśli na przykład wczytasz tablicę int z wartościami {400, -23} do parametru TensorBufferUint8, wartości zostaną ograniczone do wartości [0 , 255], a następnie zostaną przekształcone do uint8 przez {255, 0}.

Parametry
src Tablica źródłowa do wczytania.
kształt Kształt tensora, który reprezentuje src.
Rzuty
NullPointerException jeśli src ma wartość null.
NullPointerException jeśli shape ma wartość null.
IllegalArgumentException jeśli rozmiar tablicy do wczytania nie pasuje do określonego kształtu.

public abstract void loadArray (float[] src, int[] shape)

Wczytuje do bufora tablicę zmiennoprzecinkową o określonym kształcie. Jeśli bufor jest innego typu niż liczba zmiennoprzecinkowa, przed załadowaniem wartości do bufora wartości zostaną przekonwertowane na typ bufora, co może skutkować utratą dokładności. Na przykład wczytanie tablicy zmiennoprzecinkowej do obiektu TensorBufferUint8 o wartościach {400.32f, -23.04f} zostanie ograniczony do zakresu [0, 255], a następnie zostaną przekształcone w uint8 przez {255, 0}.

Parametry
src Tablica źródłowa do wczytania.
kształt Kształt tensora, który reprezentuje src.
Rzuty
NullPointerException jeśli src ma wartość null.
NullPointerException jeśli shape ma wartość null.
IllegalArgumentException jeśli rozmiar tablicy do wczytania nie pasuje do określonego kształtu.

public void loadArray (float[] src)

Wczytuje tablicę zmiennoprzecinkową do tego bufora. Jeśli bufor jest innego typu niż zmiennoprzecinkowy, przed wczytaniem wartości zostaną przekonwertowane na typ bufora, co może spowodować utratę dokładności. Na przykład wczytanie tablicy zmiennoprzecinkowej do elementu TensorBufferUint8 z wartościami {400.32f, -23.04f} zostanie ograniczony do zakresu [0, 255], a następnie zostaną przekształcone w uint8 przez {255, 0}.

W tej metodzie zakładamy, że kształt obiektu src jest taki sam jak kształt obiektu TensorBuffer. Dlatego też rozmiar elementu buffer (src.length) powinien zawsze odpowiadać rozmiarowi płaskiemu tego elementu (TensorBuffer) zarówno w przypadku stałego rozmiaru, jak i dynamicznego elementu TensorBuffer. Użyj loadArray(float[], int[]), jeśli src ma inny kształt.

Parametry
src Tablica źródłowa do wczytania.

public void loadArray (int[] src)

Wczytuje tablicę int do tego bufora. Jeśli bufor jest innego typu niż int, przed załadowaniem wartości do bufora wartości zostaną przekonwertowane na typ bufora, co może skutkować utratą dokładności. Jeśli na przykład wczytasz tablicę int z wartościami {400, -23} do parametru TensorBufferUint8, wartości zostaną ograniczone do wartości [0 , 255], a następnie zostaną przekształcone w uint8 przez {255, 0}.

W tej metodzie zakładamy, że kształt obiektu src jest taki sam jak kształt obiektu TensorBuffer. Dlatego też rozmiar elementu buffer (src.length) powinien zawsze odpowiadać rozmiarowi płaskiemu tego elementu (TensorBuffer) zarówno w przypadku stałego rozmiaru, jak i dynamicznego elementu TensorBuffer. Użyj loadArray(int[], int[]), jeśli src ma inny kształt.

Parametry
src Tablica źródłowa do wczytania.

public void loadBuffer (bufor ByteBuffer)

Wczytuje bufor bajtów do tego urządzenia TensorBuffer. Rozmiar bufora musi być taki sam jak rozmiar płaski tego elementu (TensorBuffer).

W tej metodzie zakładamy, że kształt obiektu buffer jest taki sam jak kształt obiektu TensorBuffer. Dlatego też rozmiar elementu buffer (buffer.limit()) powinien zawsze odpowiadać rozmiarowi płaskiemu tego elementu (TensorBuffer) zarówno w przypadku stałego rozmiaru, jak i dynamicznego elementu TensorBuffer. Użyj właściwości loadBuffer(ByteBuffer, int[]), jeśli buffer ma inny kształt.

Ważne: załadowany bufor jest odniesieniem. NIE MODYFIKOWAĆ. Nie tworzymy tutaj kopii w związku z problemami z wydajnością, ale jeśli konieczna jest modyfikacja, utwórz jej kopię.

Aby uzyskać najlepszą wydajność, zawsze ładuj bezpośrednie pole ByteBuffer lub ByteBuffer wspierane przez tablicę.

Jeśli buffer jest przeznaczony tylko do odczytu, stosujemy strategię kopiowania po zapisie, która zwiększa skuteczność.

Parametry
bufor Bufor bajtów do wczytania.

public void loadBuffer (ByteBuffer buffer, int[] shape)

Wczytuje do tego elementu TensorBuffer bufor bajtów o określonym kształcie.

Ważne: załadowany bufor jest odniesieniem. NIE MODYFIKOWAĆ. Nie tworzymy tutaj kopii w związku z problemami z wydajnością, ale jeśli konieczna jest modyfikacja, utwórz jej kopię.

Aby uzyskać najlepszą wydajność, zawsze ładuj bezpośrednie pole ByteBuffer lub ByteBuffer wspierane przez tablicę.

Parametry
bufor Bufor bajtów do wczytania.
kształt
Rzuty
NullPointerException jeśli buffer ma wartość null.
IllegalArgumentException jeśli rozmiary elementów buffer i typeSize nie są takie same lub rozmiary buffer i flatSize nie są takie same.