| Znane podklasy pośrednie | 
Interfejs do interpretera modelu TensorFlow Lite, z wyłączeniem metod eksperymentalnych.
Instancja InterpreterApi zawiera wytrenowany model TensorFlow Lite, w którym
 wykonywane są operacje wnioskowania na podstawie modelu.
 
Jeśli na przykład model przyjmuje tylko 1 dane wejściowe i zwraca tylko jedno dane wyjściowe:
try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, output);
 }
 Jeśli model przyjmuje wiele danych wejściowych lub wyjściowych:
Object[] inputs = {input0, input1, ...};
 Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();
 FloatBuffer ith_output = FloatBuffer.allocateDirect(3 * 2 * 4);  // Float tensor, shape 3x2x4.
 ith_output.order(ByteOrder.nativeOrder());
 map_of_indices_to_outputs.put(i, ith_output);
 try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
 }
 Jeśli model przyjmuje lub generuje tensory ciągów:
String[] input = {"foo", "bar"};  // Input tensor shape is [2].
 String[][] output = new String[3][2];  // Output tensor shape is [3, 2].
 try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, output);
 }
 Istnieje rozróżnienie między kształtem [] a kształtem[1]. Skalarny tensor ciągu znaków dane wyjściowe:
String[] input = {"foo"};  // Input tensor shape is [1].
 ByteBuffer outputBuffer = ByteBuffer.allocate(OUTPUT_BYTES_SIZE);  // Output tensor shape is [].
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, outputBuffer);
 }
 byte[] outputBytes = new byte[outputBuffer.remaining()];
 outputBuffer.get(outputBytes);
 // Below, the `charset` can be StandardCharsets.UTF_8.
 String output = new String(outputBytes, charset);
 Kolejność danych wejściowych i wyjściowych jest określana podczas konwertowania modelu TensorFlow na TensorFlowLite z modelem Toco, a także domyślne kształty danych wejściowych.
Jeśli dane wejściowe są podane jako (wielowymiarowe) tablice, odpowiednie tensory wejściowe będą
 zostanie niejawnie przeskalowana odpowiednio do kształtu tej tablicy. Jeśli dane wejściowe są podane w typach Buffer, nie wprowadza się niejawna zmiana rozmiaru. element wywołujący musi upewnić się, że rozmiar w bajtach Buffer jest zgodny z rozmiarem odpowiedniego tensora lub że rozmiar
 zmień rozmiar tensora za pomocą funkcji resizeInput(int, int[]). Informacje o kształcie i typie Tensor można
 uzyskane w ramach klasy Tensor, dostępne poprzez getInputTensor(int) i getOutputTensor(int).
 
OSTRZEŻENIE: instancje InterpreterApi nie są bezpieczne w przypadku wątków.
 
OSTRZEŻENIE: instancja InterpreterApi zawiera zasoby, które muszą być
 jawnie zwolnione przez wywołanie close()
Biblioteka TFLite jest oparta na interfejsie NDK API 19. Może działać w przypadku interfejsów API Androida poniżej 19, ale nie jest to gwarantowane.
Zagnieżdżone klasy
| klasa | InterpreterApi.Options | Klasa opcji do kontrolowania działania interpretera czasu działania. | |
Metody publiczne
| abstrakcyjne nieważne | 
 
allocateTensors()
                
                   
W razie potrzeby jawnie aktualizuje przydziały wszystkich tensorów. 
 | 
| abstrakcyjne nieważne | 
 
close()
                
                   
Zwolnij zasoby powiązane z instancją  
InterpreterApi. | 
| statyczny InterpreterApi | 
 
create(Plik modelFile, opcje InterpreterApi.Options)
                
                   
Konstruuje instancję  
InterpreterApi przy użyciu podanego modelu i opcji. | 
| statyczny InterpreterApi | 
 
create(opcje ByteBuffer byteBuffer, InterpreterApi.Options)
                
                   
Konstruuje instancję  
InterpreterApi przy użyciu podanego modelu i opcji. | 
| abstrakcyjne int, | 
 
getInputIndex(nazwa opcji ciąg znaków)
                
                   
Pobiera indeks danych wejściowych o nazwie operacji dla danych wejściowych. 
 | 
| abstrakcyjne Tensor | 
 
getInputTensor(int inputIndex)
                
                   
Pobiera Tensor powiązany z podanym indeksem danych wejściowych. 
 | 
| abstrakcyjne int, | 
 
getInputTensorCount()
                
                   
Pobiera liczbę tensorów wejściowych. 
 | 
| abstrakcyjne Długi | 
 
getLastNativeInferenceDurationNanoseconds()
                
                   
Zwraca czas wnioskowania natywnego. 
 | 
| abstrakcyjne int, | 
 
getOutputIndex(opName ciągu)
                
                   
Pobiera indeks danych wyjściowych o nazwie operacji w danych wyjściowych. 
 | 
| abstrakcyjne Tensor | 
 
getOutputTensor(int outputIndex)
                
                   
Pobiera Tensor powiązany z podanym indeksem wyjściowym. 
 | 
| abstrakcyjne int, | 
 
getOutputTensorCount()
                
                   
Pobiera liczbę wyjściowych tensorów. 
 | 
| abstrakcyjne nieważne | 
 
resizeInput(int idx, int[] dims, boolean strict)
                
                   
Zmienia rozmiar danych wejściowych modelu natywnego (IDX). 
 | 
| abstrakcyjne nieważne | 
 
resizeInput(int idx, int[] przyciemnione)
                
                   
Zmienia rozmiar danych wejściowych modelu natywnego (IDX). 
 | 
| abstrakcyjne nieważne | |
| abstrakcyjne nieważne | 
 
runForMultipleInputsOutputs(dane wejściowe Object[], dane wyjściowe Map <Liczba całkowita, Obiekt>)
                
                   
Uruchamia wnioskowanie przez model, jeśli model przyjmuje wiele danych wejściowych, lub zwraca wiele danych wyjściowych. 
 | 
Metody dziedziczone
Metody publiczne
publiczne abstrakcyjne nieważne . allocateTensors ()
W razie potrzeby jawnie aktualizuje przydziały wszystkich tensorów.
Spowoduje to rozpowszechnienie kształtów i alokacji pamięci dla tensorów zależnych z użyciem danych wejściowych podane kształty tensora.
Uwaga: to połączenie jest *wyłącznie opcjonalne*. Alokacja Tensor będzie wykonywana automatycznie podczas po zmianie rozmiaru tensorów wejściowych. To połączenie jest najbardziej przydatne przy określaniu kształtów dowolnych tensorów wyjściowych przed wykonaniem grafu, np.
 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...Uwaga: dane wyjściowe niektórych wykresów mają dynamicznie kształtowane dane wyjściowe. W takim przypadku kształt wyjściowy może nie w pełni propagować do momentu wykonania wnioskowania.
Rzuty
| IllegalStateException | jeśli nie można przydzielić tensorów grafu. | 
|---|
publiczne abstrakcyjne nieważne . zamknij ()
Zwolnij zasoby powiązane z instancją InterpreterApi. 
publiczne statyczny InterpreterApi utwórz (Plik modelu, opcje InterpreterApi.Options)
Konstruuje instancję InterpreterApi przy użyciu podanego modelu i opcji. Model
 zostanie wczytana z pliku.
Parametry
| modelFile | Plik zawierający wytrenowany model TF Lite. | 
|---|---|
| Opcje | Zestaw opcji umożliwiających dostosowanie działania tłumacza. | 
Rzuty
| IllegalArgumentException | jeśli modelFile nie koduje prawidłowego TensorFlow Lite
     model atrybucji.
 | 
|---|
publiczne statyczny InterpreterApi utwórz (ByteBuffer byteBuffer, InterpreterApi.Options)
Konstruuje instancję InterpreterApi przy użyciu podanego modelu i opcji. Model
 zostanie odczytany z urządzenia ByteBuffer.
Parametry
| byteBuffer | Wstępnie wytrenowany model TF Lite w postaci binarnej zserializowanej. ByteBuffer powinien
     nie może zostać zmodyfikowana po utworzeniu instancji InterpreterApi. Obiekt ByteBuffer może być obiektem typu MappedByteBuffer, który mapuje w pamięci plik modelu,
     bezpośrednie polecenie ByteBuffer funkcji natywnychOrder(), które zawierają treść bajtów modelu. | 
|---|---|
| Opcje | Zestaw opcji umożliwiających dostosowanie działania tłumacza. | 
Rzuty
| IllegalArgumentException | jeśli byteBuffer nie jest wartością MappedByteBuffer ani a
     bezpośrednie ByteBuffer obiektu NativeOrder.
 | 
|---|
publiczne abstrakcyjne int, . getInputIndex (Ciąg opName)
Pobiera indeks danych wejściowych o nazwie operacji dla danych wejściowych.
Parametry
| opName | 
|---|
Rzuty
| IllegalArgumentException | jeśli opName nie pasuje do żadnych danych wejściowych w używanym modelu
     aby zainicjować tłumacza.
 | 
|---|
publiczne abstrakcyjne Tensor getInputTensor (int inputIndex)
Pobiera Tensor powiązany z podanym indeksem danych wejściowych.
Parametry
| inputIndex | 
|---|
Rzuty
| IllegalArgumentException | jeśli inputIndex jest ujemny lub nie jest mniejszy niż
     liczby wejściowej modelu.
 | 
|---|
publiczne abstrakcyjne int, . getInputTensorCount ()
Pobiera liczbę tensorów wejściowych.
publiczne abstrakcyjne Długi getLastNativeInferenceDurationNanoseconds ()
Zwraca czas wnioskowania natywnego.
Rzuty
| IllegalArgumentException | jeśli model nie został zainicjowany przez interpreter. | 
|---|
publiczne abstrakcyjne int, . getOutputIndex (Ciąg opName)
Pobiera indeks danych wyjściowych o nazwie operacji w danych wyjściowych.
Parametry
| opName | 
|---|
Rzuty
| IllegalArgumentException | jeśli opName nie pasuje do żadnych danych wyjściowych w używanym modelu
     aby zainicjować tłumacza.
 | 
|---|
publiczne abstrakcyjne Tensor getOutputTensor (int outputIndex)
Pobiera Tensor powiązany z podanym indeksem wyjściowym.
Uwaga: szczegóły tensora wyjściowego (np.kształt) mogą nie zostać w pełni wypełnione do czasu wnioskowania.
 . Jeśli potrzebujesz aktualizacji szczegółów *przed* uruchomieniem wnioskowania (np. po zmianie rozmiaru
 tensor wejściowy, który może unieważnić kształty tensora wyjściowego), użyj funkcji allocateTensors(), aby
 bezpośrednio aktywować przydzielanie i propagację kształtu. Pamiętaj, że w przypadku wykresów z kształtami wyjściowymi
 zależne od *wartości* wejściowych, kształt wyjściowy może zostać w pełni określony dopiero
 aktywnego wnioskowania.
Parametry
| outputIndex | 
|---|
Rzuty
| IllegalArgumentException | jeśli outputIndex jest ujemny lub nie jest mniejszy niż
     liczby wyników modelu.
 | 
|---|
publiczne abstrakcyjne int, . getOutputTensorCount ()
Pobiera liczbę wyjściowych tensorów.
publiczne abstrakcyjne nieważne . resizeInput (int idx, int[] dims, rygorystyczna wartość logiczna)
Zmienia rozmiar danych wejściowych modelu natywnego (IDX).
Gdy tryb „rygorystyczny” ma wartość Prawda, można zmieniać rozmiar tylko nieznanych wymiarów. Nieznane wymiary to jest wskazywany jako „–1” w tablicy zwracanej przez funkcję „Tensor.shapeSignature()”.
Parametry
| Identyfikatorx | |
|---|---|
| Przyciemnia | |
| dokładny | 
Rzuty
| IllegalArgumentException | jeśli idx jest ujemny lub nie jest mniejszy niż liczba
     danych wejściowych modelu; lub jeśli podczas zmiany rozmiaru danych wejściowych idx-th wystąpi błąd. Dodatkowo błąd
     ma miejsce podczas próby zmiany rozmiaru tensora o stałych wymiarach, gdy tryb „strict” ma wartość True.
 | 
|---|
publiczne abstrakcyjne nieważne . resizeInput (int idx, int[] przyciemnione)
Zmienia rozmiar danych wejściowych modelu natywnego (IDX).
Parametry
| Identyfikatorx | |
|---|---|
| Przyciemnia | 
Rzuty
| IllegalArgumentException | jeśli idx jest ujemny lub nie jest mniejszy niż liczba
     danych wejściowych modelu; lub jeśli podczas zmiany rozmiaru danych wejściowych idx-th wystąpi błąd.
 | 
|---|
publiczne abstrakcyjne nieważne . bieg (Dane wejściowe obiektu, dane wyjściowe Object)
Uruchamia wnioskowanie przez model, jeśli model przyjmuje tylko 1 dane wejściowe i udostępnia tylko 1 dane wyjściowe.
Ostrzeżenie: interfejs API jest wydajniejszy, jeśli Buffer (najlepiej bezpośredni, ale nie wymagany)
 jest używany jako typ danych wejściowych/wyjściowych. Zastanów się nad użyciem atrybutu Buffer do plików danych i pobierania
 podstawowych danych
w celu zwiększenia wydajności. Oto konkretne typy Buffer
 obsługiwane:
 
ByteBuffer– zgodność z dowolnym podstawowym typem Tensor.FloatBuffer– kompatybilny z tensorami pływackimi.IntBuffer– zgodny z procesorami Tensor int32.LongBuffer– zgodny z procesorami Tensor int64.
Buffer lub jako dane wejściowe skalarne.Parametry
| dane wejściowe | tablica lub tablica wielowymiarowa albo Buffer typów podstawowych
     int, float, long i byte. Buffer to preferowany sposób przesyłania dużych
     danych wejściowych dla typów podstawowych, natomiast typy ciągów znaków wymagają użycia funkcji (wielowymiarowe)
     tablicowa ścieżka wejściowa. Kiedy używana jest właściwość Buffer, jej zawartość powinna pozostać niezmieniona do
     sugerowanie modelu i element wywołujący musi upewnić się, że Buffer jest w
     w odpowiednim miejscu do czytania. Wartość null jest dozwolona tylko wtedy, gdy osoba wywołująca używa funkcji
     Delegate, który pozwala na interoperacyjność uchwytu bufora i taki bufor został powiązany z
     wpisz Tensor. | 
|---|---|
| output | wielowymiarowa tablica danych wyjściowych lub Buffer typów podstawowych
     int, float, long i byte. Gdy używane jest Buffer, osoba wywołująca musi upewnić się, że:
     że jest ustawiona odpowiednia pozycja zapisu. Wartość null jest dozwolona i jest przydatna dla
     w określonych przypadkach, np.gdy rozmówca używa funkcji Delegate, która umożliwia buforowanie.
     współpracy i taki bufor został powiązany z danymi wyjściowymi Tensor (zobacz też Interpreter.Options#setAllowBufferHandleOutput(boolean)).
     lub jeśli dane wyjściowe grafu mają dynamicznie kształtowane dane wyjściowe, a element wywołujący po wywołaniu wnioskowania musi przesłać zapytanie dotyczące kształtu wyjściowego Tensor, pobierając je bezpośrednio z tych danych.
     Tensor (przez Tensor.asReadOnlyBuffer()). | 
Rzuty
| IllegalArgumentException | jeśli input ma wartość null lub jest pusty albo jeśli wystąpi błąd, gdy
     aktywnego wnioskowania. | 
|---|---|
| IllegalArgumentException | (EKSPERYMENTALNE, może ulec zmianie), jeśli wnioskowanie jest
     przerwany przez: setCancelled(true).
 | 
publiczne abstrakcyjne nieważne . runForMultipleInputsOutputs (dane wejściowe obiektu[], dane wyjściowe mapy <liczby całkowitej, obiekt>)
Uruchamia wnioskowanie przez model, jeśli model przyjmuje wiele danych wejściowych, lub zwraca wiele danych wyjściowych.
Ostrzeżenie: interfejs API jest bardziej wydajny, jeśli interfejs Buffer (najlepiej bezpośredni, ale nie jest wymagany)
 są używane jako typy danych wejściowych/wyjściowych. Zastanów się nad użyciem atrybutu Buffer do plików danych i pobierania
 podstawowych danych
w celu zwiększenia wydajności. Oto konkretne typy Buffer
 obsługiwane:
 
ByteBuffer– zgodność z dowolnym podstawowym typem Tensor.FloatBuffer– kompatybilny z tensorami pływackimi.IntBuffer– zgodny z procesorami Tensor int32.LongBuffer– zgodny z procesorami Tensor int64.
Buffer lub jako dane wejściowe skalarne.
 Uwaga: wartości parametru null w elementach inputs i outputs to
 dozwolone tylko wtedy, gdy wywołujący obiekt używa Delegate, który umożliwia współdziałanie uchwytu bufora;
 taki bufor został powiązany z odpowiednimi danymi wejściowymi lub wyjściowymi Tensor.
Parametry
| dane wejściowe | tablicę danych wejściowych. Dane wejściowe powinny być w tej samej kolejności co dane wejściowe funkcji
     model atrybucji. Każde dane wejściowe mogą być tablicą lub wielowymiarową tablicą albo obiektem Buffer
     podstawowych typów, takich jak int, float, long i byte. Buffer to preferowany sposób
     do przekazywania dużych danych wejściowych, natomiast typy ciągów znaków wymagają stosowania (wielowymiarowej) tablicy
     ścieżkę wejściową. Gdy jest używana funkcja Buffer, jej zawartość powinna pozostać niezmieniona do czasu użycia modelu
     wnioskowania i element wywołujący musi upewnić się, że Buffer jest w odpowiednim miejscu
     pozycji odczytu. | 
|---|---|
| dane wyjściowe | dane wyjściowe mapowania map indeksują wielowymiarowe tablice danych wyjściowych lub elementów Buffer typów podstawowych, w tym int, float, long i byte. Wystarczy zachować
     wskazuje dane wyjściowe, które mają być używane. Gdy używane jest Buffer, osoba wywołująca musi upewnić się, że:
     że jest ustawiona odpowiednia pozycja zapisu. Mapa może być pusta w przypadkach, gdy:
     uchwyty bufora są używane w przypadku danych tensora wyjściowego lub w sytuacjach, gdy dane wyjściowe są dynamicznie generowane
     ma kształt i element wywołujący musi przesłać zapytanie dotyczące wyjściowego kształtu Tensor po zastosowaniu wnioskowania
     Dane są pobierane bezpośrednio z tensora wyjściowego (przez Tensor.asReadOnlyBuffer()). | 
Rzuty
| IllegalArgumentException | jeśli inputs ma wartość null lub jest pusty, jeśli outputs to
     wartość null lub jeśli podczas uruchamiania wnioskowania wystąpi błąd.
 | 
|---|