Tensorflow на Android с привязками Python?
Я пытаюсь построить ядро Tensorflow с привязками Python для Android - для использования из приложения Kivy в Android, но не уверен, как заставить привязки Python работать.
компиляция ядра Tensorflow для Android работает со следующим:
bazel build -c opt
--crosstool_top=//external:android/crosstool
--cpu=armeabi-v7a
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain
--verbose_failures
//tensorflow/core:android_tensorflow_lib
кто-нибудь знает, как добавить к нему привязки Python? Это вообще возможно?
Я прочитал документы, сделал много поиска, но не повезло найти что-нибудь об этом. Я видел, что много другие люди также заинтересованы в том, чтобы Tensorflow работал на Kivy (как для Android, так и для iOS), но пока никто этого не сделал. Люди только дошли до того, что сказали, что нам понадобится рецепт python-для-android, но первым шагом для рецепта является создание для Android с привязками Python, поэтому вопрос выше.
1 ответов
примечание: Я никогда не работал с Tensorflow
исходя из pypi единственная проблема зависимости здесь может быть NumPy, но есть рецепт для нее. Итак, у нас есть NumPy,но нет рецепт для себя Tensorflow. Что теперь?
ответ документация о том, как сделать рецепт.
сначала я бы посмотрел на уже работающие рецепты, чтобы на самом деле понять, как они работают, особенно те, которые работают с C/C++ и не на Cython как это немного проще сделать рецепт на Cython (больше даже если вы сделали код).
это рецепты, которые я считаю основным камнем для создания рецепта Tensorflow:
каждый из них имеет часть, которая поможет вам собрать рабочую рецепт. Теперь, есть проблема с привязками. Есть manylinux
колеса, но они, скорее всего, не помогут вам на Android (например,на всех) в том состоянии, в котором они находятся. Поэтому вам нужно будет построить из источника (очевидно), и у них есть целую папку связанные с этой частью.
это приводит нас к вашей части bazel
код. В build_pip_package.sh есть много строк, связанных с этой штукой Базеля.
Итак, после того, как вы понять, как работают рецепты есть две возможности:
- ваш кусок кода на самом деле что-то делает и строит его для android
- ваш код ничего не стоит
если ваш код действительно работает, есть хороший шанс, что вы сможете объединить уже сделанные setup.py
файл в простой рецепт, надеюсь, только с другой проверкой платформы (и с использованием правильного bazel
бинарные полагаю). Как уже есть setup.py
файл, файлы пакета должны быть перемещены на Python, который скомпилирован для Android.
С другой стороны, если кусок кода, который вы вставили выше, бесполезен, то вы, вероятно, в конечном итоге скомпилируете код самостоятельно + изобретая их setup.py
только на P4A как рецепт. Если вы не знакомы с шагами компиляции, необходимыми для построения из источника, я действительно не завидую вам в этом процессе.
кроме того, это может быть хорошо, чтобы говоря о в размере финала APK. Вы можете увидеть Tensorflow на PyPI только с небольшим колесом 13MB для Windows. Колеса Manylinux, однако,огромный (37-42MB) и я думаю, что вы получите размер между этими двумя для Android, Если вы планируете установить что-либо еще, кроме самого Tensorflow. Всегда есть NumPy, который вам придется перетащить с ним на телефон в качестве зависимости. Так что дает вам ~50MB + APK файл, который может быть не очень желательным (зависит от вы.)
этот кусок кода связанные с Python в их РЕПО может помочь вам тоже.