TensorBuffer

publiczna klasa abstrakcyjna TensorBuffer
Znane podklasy bezpośrednie

Reprezentuje bufor danych dla danych wejściowych lub wyjściowych modelu.

Metody publiczne

statyczny bufor Tensora
createDynamic ( Typ danychTyp danych)
Tworzy pusty dynamiczny TensorBuffer z określonym DataType .
statyczny bufor Tensora
createFixedSize (kształt int[], typ danych DataType )
Tworzy TensorBuffer o określonym shape i DataType .
statyczny bufor Tensora
createFrom (bufor TensorBuffer , typ danych DataType)
Tworzy TensorBuffer głębokie kopiowanie danych z innego, z określonym DataType .
Bufor bajtów
pobierzBufor ()
Zwraca bufor danych.
abstrakcyjny typ danych
pobierzTypDanych ()
Zwraca typ danych tego bufora.
wew
getFlatSize ()
Pobiera flatSize buforu.
abstrakcyjny pływak[]
getFloatArray ()
Zwraca tablicę zmiennoprzecinkową wartości przechowywanych w tym buforze.
abstrakcyjny pływak
getFloatValue (int absIndex)
Zwraca wartość zmiennoprzecinkową przy danym indeksie.
streszczenie int[]
getIntArray ()
Zwraca tablicę typu int wartości przechowywanych w tym buforze.
streszczenie wew
getIntValue (int absIndex)
Zwraca wartość int przy danym indeksie.
int[]
uzyskaj kształt ()
Pobiera bieżący kształt.
streszczenie wew
getTypeSize ()
Zwraca liczbę bajtów pojedynczego elementu w tablicy.
wartość logiczna
jestDynamiczny ()
Zwraca, jeśli TensorBuffer ma dynamiczny rozmiar (można dowolnie zmieniać rozmiar).
abstrakcyjna pustka
LoadArray (int[] src, int[] kształt)
Ładuje tablicę int do tego bufora o określonym kształcie.
abstrakcyjna pustka
LoadArray (float[] src, int[] kształt)
Ładuje do tego bufora tablicę zmiennoprzecinkową o określonym kształcie.
próżnia
załadujArray (float[] src)
Ładuje tablicę float do tego bufora.
próżnia
załadujArray (int[] src)
Ładuje tablicę int do tego bufora.
próżnia
loadingBuffer (bufor ByteBuffer )
Ładuje bufor bajtowy do tego TensorBuffer .
próżnia
loadingBuffer (bufor ByteBuffer , kształt int[])
Ładuje bufor bajtowy do tego TensorBuffer o określonym kształcie.

Metody dziedziczone

Metody publiczne

publiczny statyczny TensorBuffer createDynamic ( typ danych typ danych )

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

Dynamiczne TensorBuffers ponownie przydzielą pamięć podczas ładowania tablic lub buforów danych o różnych rozmiarach buforów. Oto kilka przykładów:

 // 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
typ danych Typ danych TensorBuffer , który ma zostać utworzony.

publiczny statyczny TensorBuffer createFixedSize (kształt int[], typ danych DataType )

Tworzy TensorBuffer o określonym shape i DataType . Oto kilka przykładów:

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

Nie można zmienić rozmiaru TensorBuffer o stałym rozmiarze po jego utworzeniu.

Parametry
kształt Kształt TensorBuffer , który ma zostać utworzony.
typ danych Typ danych TensorBuffer , który ma zostać utworzony.
Rzuca
Wyjątek NullPointer jeśli shape ma wartość null.
Wyjątek IllegalArgument jeśli shape ma elementy inne niż dodatnie.

public static TensorBuffer createFrom (bufor TensorBuffer , DataType typ danych)

Tworzy TensorBuffer głębokie kopiowanie danych z innego, z określonym DataType .

Parametry
bufor źródłowy TensorBuffer z którego chcesz skopiować.
typ danych oczekiwany DataType nowo utworzonego TensorBuffer .
Rzuca
Wyjątek NullPointer jeśli buffer ma wartość zerową.

publiczny ByteBuffer getBuffer ()

Zwraca bufor danych.

publiczny streszczenie DataType getDataType ()

Zwraca typ danych tego bufora.

publiczny int getFlatSize ()

Pobiera flatSize buforu.

Rzuca
Wyjątek IllegalStateException jeśli podstawowe dane są uszkodzone

publiczna abstrakcja float[] getFloatArray ()

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

publiczna abstrakcja float getFloatValue (int absIndex)

Zwraca wartość zmiennoprzecinkową przy danym indeksie. Jeżeli bufor jest innego typu niż float, wartość zostanie przekonwertowana na float. Na przykład podczas odczytywania wartości z TensorBufferUint8 wartość zostanie najpierw odczytana jako uint8, a następnie zostanie przekonwertowana z uint8 na 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);
 

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

publiczne streszczenie int[] getIntArray ()

Zwraca tablicę typu int wartości przechowywanych w tym buforze. Jeśli bufor jest innego typu niż int, wartości zostaną przekonwertowane na int i może wystąpić utrata precyzji. Na przykład pobierając tablicę int z TensorBufferFloat o wartościach {400.32f, 23.04f}, wynikiem jest {400, 23}.

publiczne streszczenie int getIntValue (int absIndex)

Zwraca wartość int przy danym indeksie. Jeżeli bufor jest innego typu niż int, wartość zostanie przekonwertowana na int. Na przykład podczas odczytywania wartości z TensorBufferFloat wartość zostanie najpierw odczytana jako float, a następnie zostanie przekonwertowana z float na int. Może wystąpić utrata precyzji.

 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
absIndeks Indeks bezwzględny wartości do odczytania.

public int[] getShape ()

Pobiera bieżący kształt. (zwracając kopię tutaj, aby uniknąć nieoczekiwanych modyfikacji.)

Rzuca
Wyjątek IllegalStateException jeśli podstawowe dane są uszkodzone

publiczne streszczenie int getTypeSize ()

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

publiczna wartość logiczna isDynamic ()

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

publiczna abstrakcja void loadingArray (int[] src, int[] kształt)

Ładuje tablicę int do tego bufora o określonym kształcie. Jeśli bufor jest innego typu niż int, wartości zostaną przekonwertowane na typ bufora przed załadowaniem do bufora, co może skutkować utratą precyzji. Na przykład ładując tablicę int z wartościami {400, -23} do TensorBufferUint8 , wartości zostaną ograniczone do [0, 255], a następnie rzutowane na uint8 przez {255, 0}.

Parametry
źródło Tablica źródłowa do załadowania.
kształt Kształt tensora, który reprezentuje src .
Rzuca
Wyjątek NullPointer jeśli src ma wartość null.
Wyjątek NullPointer jeśli shape ma wartość null.
Wyjątek IllegalArgument jeśli rozmiar ładowanej tablicy nie odpowiada określonemu kształtowi.

publiczna abstrakcja void loadingArray (float[] src, int[] kształt)

Ładuje do tego bufora tablicę zmiennoprzecinkową o określonym kształcie. Jeśli bufor jest innego typu niż float, wartości zostaną przekonwertowane na typ bufora przed załadowaniem do bufora i może wystąpić utrata precyzji. Na przykład ładując tablicę zmiennoprzecinkową do TensorBufferUint8 z wartościami {400.32f, -23.04f}, wartości zostaną ograniczone do [0, 255], a następnie rzutowane na uint8 przez {255, 0}.

Parametry
źródło Tablica źródłowa do załadowania.
kształt Kształt tensora, który reprezentuje src .
Rzuca
Wyjątek NullPointer jeśli src ma wartość null.
Wyjątek NullPointer jeśli shape ma wartość null.
Wyjątek IllegalArgument jeśli rozmiar ładowanej tablicy nie odpowiada określonemu kształtowi.

publiczna tablica pustego obciążenia (float[] src)

Ładuje tablicę float do tego bufora. Jeśli bufor jest innego typu niż float, wartości zostaną przekonwertowane na typ bufora przed załadowaniem do bufora i może wystąpić utrata precyzji. Na przykład ładując tablicę zmiennoprzecinkową do TensorBufferUint8 z wartościami {400.32f, -23.04f}, wartości zostaną ograniczone do [0, 255], a następnie rzutowane na uint8 przez {255, 0}.

Użycie tej metody zakłada, że ​​kształt src jest taki sam jak kształt tego TensorBuffer . Zatem rozmiar buffer ( src.length ) powinien zawsze odpowiadać płaskiemu rozmiarowi tego TensorBuffer , zarówno dla TensorBuffer o stałym rozmiarze, jak i dynamicznym. Użyj metody loadArray(float[], int[]) jeśli src ma inny kształt.

Parametry
źródło Tablica źródłowa do załadowania.

publiczna pusta tablica ładowania (int[] src)

Ładuje tablicę int do tego bufora. Jeśli bufor jest innego typu niż int, wartości zostaną przekonwertowane na typ bufora przed załadowaniem do bufora, co może skutkować utratą precyzji. Na przykład ładując tablicę int z wartościami {400, -23} do TensorBufferUint8 , wartości zostaną ograniczone do [0, 255], a następnie rzutowane na uint8 przez {255, 0}.

Użycie tej metody zakłada, że ​​kształt src jest taki sam jak kształt tego TensorBuffer . Zatem rozmiar buffer ( src.length ) powinien zawsze odpowiadać płaskiemu rozmiarowi tego TensorBuffer , zarówno dla TensorBuffer o stałym rozmiarze, jak i dynamicznym. Użyj metody loadArray(int[], int[]) jeśli src ma inny kształt.

Parametry
źródło Tablica źródłowa do załadowania.

public void loadingBuffer (bufor ByteBuffer )

Ładuje bufor bajtowy do tego TensorBuffer . Rozmiar bufora musi odpowiadać płaskiemu rozmiarowi tego TensorBuffer .

Użycie tej metody zakłada, że ​​kształt buffer jest taki sam jak kształt tego TensorBuffer . Zatem rozmiar buffer ( buffer.limit() ) powinien zawsze odpowiadać płaskiemu rozmiarowi tego TensorBuffer , zarówno dla TensorBuffer o stałym rozmiarze, jak i dynamicznego. Użyj metody loadBuffer(ByteBuffer, int[]) jeśli buffer ma inny kształt.

Ważne: załadowany bufor jest odniesieniem. NIE MODYFIKUJ. Nie tworzymy tutaj kopii ze względu na wydajność, ale jeśli konieczna jest modyfikacja, wykonaj kopię.

Aby uzyskać najlepszą wydajność, zawsze ładuj bezpośrednio ByteBuffer lub ByteBuffer wspierany przez tablicę.

Jeśli buffer jest tylko do odczytu, w celu zapewnienia wydajności przyjmujemy strategię kopiowania przy zapisie.

Parametry
bufor Bufor bajtów do załadowania.

public void loadingBuffer (bufor ByteBuffer , kształt int[])

Ładuje bufor bajtowy do tego TensorBuffer o określonym kształcie.

Ważne: załadowany bufor jest odniesieniem. NIE MODYFIKUJ. Nie tworzymy tutaj kopii ze względu na wydajność, ale jeśli konieczna jest modyfikacja, wykonaj kopię.

Aby uzyskać najlepszą wydajność, zawsze ładuj bezpośrednio ByteBuffer lub ByteBuffer wspierany przez tablicę.

Parametry
bufor Bufor bajtów do załadowania.
kształt
Rzuca
Wyjątek NullPointer jeśli buffer ma wartość zerową.
Wyjątek IllegalArgument jeśli rozmiar buffer i typeSize nie pasują lub rozmiar buffer i flatSize nie są zgodne.