Najczęstsze pytania

Jeśli nie znajdziesz tutaj odpowiedzi na swoje pytanie, przejrzyj naszą szczegółową dokumentację dotyczącą danego tematu lub zgłoś problem z GitHubem .

Konwersja modelu

Jakie formaty są obsługiwane w przypadku konwersji z TensorFlow na TensorFlow Lite?

Obsługiwane formaty są wymienione tutaj

Dlaczego niektóre operacje nie są zaimplementowane w TensorFlow Lite?

Aby zachować lekkość TFLite, TFLite obsługuje tylko niektórych operatorów TF (wymienionych na liście dozwolonych ).

Dlaczego mój model nie konwertuje?

Ponieważ liczba operacji TensorFlow Lite jest mniejsza niż w przypadku TensorFlow, konwersja niektórych modeli może nie być możliwa. Tutaj wymieniono niektóre typowe błędy.

W przypadku problemów z konwersją niezwiązanych z brakującymi operacjami lub operacjami przepływu kontroli, przeszukaj nasze problemy w GitHubie lub złóż nowy .

Jak sprawdzić, czy model TensorFlow Lite zachowuje się tak samo jak oryginalny model TensorFlow?

Najlepszym sposobem przetestowania jest porównanie wyników modeli TensorFlow i TensorFlow Lite dla tych samych danych wejściowych (dane testowe lub losowe dane wejściowe), jak pokazano tutaj .

Jak określić wejścia/wyjścia dla bufora protokołu GraphDef?

Najłatwiejszym sposobem sprawdzenia wykresu z pliku .pb jest użycie Netron , przeglądarki typu open source do modeli uczenia maszynowego.

Jeśli Netron nie może otworzyć wykresu, możesz wypróbować narzędzie podsumowania_grafu .

Jeśli narzędzie podsumowania_grafu zwróci błąd, możesz wizualizować GraphDef za pomocą TensorBoard i szukać danych wejściowych i wyjściowych na wykresie. Aby zwizualizować plik .pb , użyj skryptu import_pb_to_tensorboard.py jak poniżej:

python import_pb_to_tensorboard.py --model_dir <model path> --log_dir <log dir path>

Jak sprawdzić plik .tflite ?

Netron to najprostszy sposób na wizualizację modelu TensorFlow Lite.

Jeśli Netron nie może otworzyć Twojego modelu TensorFlow Lite, możesz wypróbować skrypt Visualize.py w naszym repozytorium.

Jeśli używasz TF 2.5 lub nowszej wersji

python -m tensorflow.lite.tools.visualize model.tflite visualized_model.html

W przeciwnym razie możesz uruchomić ten skrypt za pomocą Bazela

bazel run //tensorflow/lite/tools:visualize model.tflite visualized_model.html

Optymalizacja

Jak zmniejszyć rozmiar skonwertowanego modelu TensorFlow Lite?

Podczas konwersji do TensorFlow Lite można zastosować kwantyzację po szkoleniu, aby zmniejszyć rozmiar modelu. Kwantyzacja po treningu kwantyzuje wagi z dokładnością do 8 bitów w stosunku do wartości zmiennoprzecinkowej i dekwantyzuje je w czasie wykonywania w celu wykonania obliczeń zmiennoprzecinkowych. Należy jednak pamiętać, że może to mieć pewien wpływ na dokładność.

Jeśli możliwe jest ponowne uczenie modelu, rozważ szkolenie uwzględniające kwantyzację . Należy jednak pamiętać, że szkolenie uwzględniające kwantyzację jest dostępne tylko dla podzbioru architektur splotowych sieci neuronowych.

Aby lepiej zrozumieć różne metody optymalizacji, zapoznaj się z sekcją Optymalizacja modelu .

Jak zoptymalizować wydajność TensorFlow Lite pod kątem mojego zadania uczenia maszynowego?

Proces wysokiego poziomu optymalizacji wydajności TensorFlow Lite wygląda mniej więcej tak:

  • Upewnij się, że masz odpowiedni model do zadania. Klasyfikację obrazów można znaleźć w centrum TensorFlow .
  • Zmień liczbę wątków. Wielu operatorów TensorFlow Lite obsługuje jądra wielowątkowe. Aby to zrobić, możesz użyć SetNumThreads() w interfejsie API C++ . Jednak zwiększenie liczby wątków powoduje zmienność wydajności w zależności od środowiska.
  • Użyj akceleratorów sprzętowych. TensorFlow Lite obsługuje przyspieszanie modelu dla określonego sprzętu przy użyciu delegatów. Zobacz nasz przewodnik dla delegatów , aby uzyskać informacje na temat obsługiwanych akceleratorów i sposobu ich używania w przypadku Twojego modelu na urządzeniu.
  • (Zaawansowany) Model profilu. Narzędzie do testów porównawczych Tensorflow Lite ma wbudowany profiler, który może wyświetlać statystyki poszczególnych operatorów. Jeśli wiesz, jak zoptymalizować wydajność operatora dla konkretnej platformy, możesz zaimplementować operator niestandardowy .

Bardziej szczegółowe omówienie sposobów optymalizacji wydajności można znaleźć w artykule Najlepsze praktyki .