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 в их РЕПО может помочь вам тоже.