2016-09-04 6 views
5

Urządzenie Tensorflow Android demo stanowi przyzwoitą podstawę do zbudowania aplikacji dla systemu Android, która korzysta z wykresu TensorFlow, ale utknąłem na tym, jak zmienić przeznaczenie dla aplikacji, która nie wykonuje klasyfikacji obrazu. Jak to jest, ładuje się na wykresie Inception z pliku .pb i używa go do uruchamiania wniosków (i kod zakłada jako taki), ale chciałbym załadować własny wykres (z pliku .pb) i wykonaj niestandardową implementację obsługi wejścia/wyjścia wykresu.Demo Tensorflow Android: załadować niestandardowy wykres?

Omawiany wykres pochodzi z Assignment 6 kursu głębokiego uczenia się Udacity, RNN, który wykorzystuje LSTM do generowania tekstu. (Zamrożone już zostało to w pliku .pb). Kod demo Androida opiera się jednak na założeniu, że ma do czynienia z klasyfikatorem obrazu. Do tej pory zorientowałem się, że będę musiał zmienić wartości parametrów przekazanych do tensorflow.initializeTensorflow (zwanej TensorFlowImageListener), ale kilka parametrów reprezentuje właściwości wejść obrazu (np. IMAGE_SIZE), którego szukam na wykresie do załadowania nie ma. Czy to oznacza, że ​​będę musiał zmienić kod natywny? Bardziej ogólnie, jak mogę podejść do tego całego problemu?

+0

Jakieś znalezione rozwiązania? –

Odpowiedz

0

Dobra wiadomość: ostatnio znacznie łatwiej było umieścić wstępnie wyszkolony model TensorFlow w aplikacji na Androida. Sprawdź moje posty na blogu tutaj:
https://medium.com/@daj/using-a-pre-trained-tensorflow-model-on-android-e747831a3d6 (część 1) https://medium.com/@daj/using-a-pre-trained-tensorflow-model-on-android-part-2-153ebdd4c465 (część 2)

Moja blogu przechodzi w dużo bardziej szczegółowo, ale w skrócie, wszystko co musisz zrobić, to:

  1. Dołączenie zależności kompilacji org.tensorflow:tensorflow-android:+ w pliku build.gradle.
  2. Skorzystaj z klasy Java TensorFlowInferenceInterface, aby uzyskać interfejs ze swoim modelem (nie trzeba modyfikować żadnego natywnego kodu).

Aplikacja demonstracyjna TensorFlow dla systemu Android została zaktualizowana do korzystania z tego nowego podejścia. Zobacz TensorFlowImageClassifier.recognizeImage, gdzie korzysta z TensorFlowInferenceInterface.

Nadal będziesz musiał określić niektóre konfiguracje, takie jak nazwy węzłów wejściowych i wyjściowych na wykresie, oraz rozmiar danych wejściowych, ale powinieneś być w stanie wymyślić te informacje pod numerem from using TensorBoard lub sprawdzić szkolenie scenariusz.