2015-12-27 6 views
6

Ich habe ein Skript für die Sequenzklassifizierung mit TensorFlow in Python geschrieben. Ich möchte diesen Code auf Android portieren. Ich habe das Beispiel auf der TensorFlow github Seite in Bezug auf Android gesehen, aber das ist für Bilder.Port TensorFlow Code zu Android

Gibt es eine Möglichkeit, meinen TensorFlow Python-Code direkt auf Android zu portieren?

+0

Was meinen Sie mit "direkt"? Natürlich können Sie es in C++ erstellen eine Bibliothek erstellen und diese Bibliothek von einem Android-Programm laden. – fabrizioM

+0

Bedeutet jede Alternative zum Neuschreiben des gesamten Codes –

+0

Können Sie bitte den Code und oder teilen der Link auf GitHub, auf den Sie sich beziehen? – 0x90

Antwort

6

Der typische Weg, dies zu tun ist (und Zug) Ihr Modell, speichern Sie die GraphDef Proto in eine Datei mit tf.train.write_graph(), und dann schreiben Sie eine App mit dem JNI Python bauen die C++ TensorFlow API aufrufen (siehe eine komplette Beispiel here).

Wenn Sie Ihr Diagramm in Python erstellen, sollten Sie die Namen der Tensoren notieren, die (i) die zu klassifizierenden Eingabedaten und (ii) die vorhergesagten Ausgabewerte darstellen. Dann können Sie einen Schritt ausführen, indem Sie einen Wert für (i) eingeben und den Wert für (ii) abrufen.

Ein letztes Problem ist, wie Sie die Modellparameter in Ihrem exportierten Diagramm darstellen. Dazu gibt es mehrere Möglichkeiten, z. B. das Versenden eines TensorFlow-Checkpoints (geschrieben von tf.train.Saver) als Teil Ihrer App und das Ausführen der Wiederherstellungs-Ops zum erneuten Laden. Eine Methode, die in der released InceptionV3 model verwendet wurde, besteht darin, den Graph neu zu schreiben, so dass die Modellparameter durch "Const" Knoten ersetzt werden, und der Modellgraph wird eigenständig.

+0

können Sie ein detaillierteres Verfahren bereitstellen, dem wir folgen können? – Chaine

0

Es gibt QPython or Kivy.

QPython - Android Apps auf GooglePlay. Es ist eine Skript-Engine, die Python auf Android-Geräten ausführt. Es lässt Ihr Android-Gerät Python-Skripte und -Projekte ausführen. Es enthält den Python-Interpreter und einige andere Dinge wie pip, aber es gibt keinen Compiler, so dass nur reine Python-Pakete funktionieren.

Python for Android - können Sie eine Python-Anwendung in ein Android-APK zusammen mit zusätzlichen Paketen pure-python und solchen, die kompiliert werden müssen, kompilieren.

+0

Die Frage war für die Portierung von TensorfFlow-Code, nicht generischer Python-Code –

+0

Interessante Idee Ich habe eine separate Frage über Tensorflow und Kivy hier http://stackoverflow.com/questions/40330674/tensorflow erstellt -on-android-via-kivy – CodingYourLife