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
- Sklonuj repozytorium TensorFlow
- Uruchom skrypt
visualize.py
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 .