Znane podklasy bezpośrednie |
Reprezentuje bufor danych dla danych wejściowych lub wyjściowych modelu.
Metody publiczne
statyczny bufor Tensora | |
statyczny bufor Tensora | createFixedSize (kształt int[], typ danych 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 | |
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 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. |