Tensorflow auf Android mit Python-Bindungen?

8

Ich versuche, Tensorflow-Kern mit Python-Bindungen für Android zu bauen - von einer Kivy-App in Android verwendet werden, aber nicht sicher, wie die Python-Bindungen funktionieren.

Das Zusammenstellen des Tensorflow-Kerns für Android funktioniert folgendermaßen:

%Vor%

Weiß jemand, wie man ihm Python-Bindungen hinzufügt? Ist das überhaupt möglich?

Ich habe die Dokumentationen gelesen, viel gesucht, aber kein Glück dabei gefunden. Ich habe gesehen, dass viele andere Leute auch daran interessiert sind, Tensorflow an Kivy (sowohl für Android als auch für iOS) arbeiten zu lassen, aber bisher scheint niemand das getan zu haben. Die Leute kamen nur so weit zu sagen, dass wir ein Python-für-Android-Rezept brauchen würden, aber der erste Schritt für ein Rezept ist, für Android mit Python-Bindings zu bauen, daher die obige Frage.

    
Zoltan Fedor 17.03.2017, 15:27
quelle

1 Antwort

3

Hinweis: Ich habe noch nie mit Tensorflow gearbeitet

Nach pypi kann hier das einzige Abhängigkeitsproblem NumPy sein, aber es gibt ein recipe . Also, wir haben NumPy, aber es gibt kein Rezept für den Tensorflow selbst. Was jetzt?

Die Antwort finden Sie in der Dokumentation zur Erstellung eines Rezepts.

>

Zuerst würde ich mir die bereits funktionierenden Rezepte ansehen, um zu verstehen, wie sie funktionieren, besonders diejenigen, die mit C / C ++ und nicht mit Cython arbeiten, da es ein bisschen einfacher ist, ein zu machen Rezept für Cython (mehr auch wenn Sie den Code gemacht haben).

Dies sind die Rezepte, die ich als Grundstein für die Erstellung eines Tensorflow-Rezepts erachte:

Jeder von ihnen hat einen Teil, der Ihnen hilft, ein Arbeitsrezept zusammenzustellen. Jetzt gibt es ein Problem mit den Bindungen. Es gibt manylinux wheels, aber diese werden dir wahrscheinlich nicht auf Android helfen (wie überhaupt ) in dem Zustand, in dem sie sind. Daher müssen Sie von der Quelle aus (natürlich) bauen und sie haben einen ganzen Ordner bezogen auf diesen Teil.

Das führt uns zu deinem Stück bazel code. In build_pip_package.sh gibt es viele Zeilen, die mit dem Bazelding zusammenhängen .

Nachdem Sie also verstanden haben, wie die Rezepte funktionieren, gibt es zwei Möglichkeiten:

  • Ihr Stück Code macht tatsächlich etwas und baut es für Android
  • Ihr Code ist wertlos

Wenn Ihr Code tatsächlich funktioniert, besteht eine gute Chance, dass Sie die bereits erstellte setup.py Datei hoffentlich einfach zu einem einfach aussehenden Rezept kombinieren können ein weiterer Plattformcheck (und die korrekte bazel binary nehme ich an). Da es bereits setup.py file gibt, sollten die Paketdateien in den Python verschoben werden, der für Android kompiliert wurde.

Wenn andererseits der Code, den Sie oben eingefügt haben, wertlos ist, dann werden Sie wahrscheinlich den Code selbst kompilieren und ihr setup.py nur für das P4A als Rezept neu erfinden. Wenn Sie nicht mit den Kompilierungsschritten vertraut sind, die für das Erstellen von Quellen erforderlich sind, beneide ich Sie wirklich nicht um den Prozess.

Es kann auch gut sein, die Größe des endgültigen APKs zu erwähnen. Sie können Tensorflow auf PyPI mit nur einem kleinen Rad von 13 MB für Windows sehen. Die Wheels von Manylinux sind jedoch riesig <(37-42MB) und ich denke, dass Sie eine Größe zwischen diesen beiden für Android haben werden, wenn Sie etwas anderes als Tensorflow selbst installieren wollen. Es gibt immer NumPy, die du als Abhängigkeit vom Telefon mitnehmen musst. So erhalten Sie ~ 50MB + APK-Datei, die möglicherweise nicht wirklich erwünscht ist (hängt von Ihnen ab).

Dieses Stück Code , das sich auf Python in ihrem Repo bezieht, könnte Ihnen ebenfalls helfen.

    
KeyWeeUsr 19.03.2017, 19:47
quelle

Tags und Links