2017-03-17 12 views
8

Android用のKivyアプリからPythonバインディングを使用してTensorflowコアをビルドしようとしていますが、Pythonバインディングを取得する方法がわかりません。 Android用TensorflowコアをコンパイルAndroidでPythonバインディングを使用したTensorflow?

は以下で動作します:

bazel build -c opt \ 
    --crosstool_top=//external:android/crosstool \ 
    --cpu=armeabi-v7a \ 
    [email protected]_tools//tools/cpp:toolchain \ 
    --verbose_failures \ 
    //tensorflow/core:android_tensorflow_lib 

は、それまでのPythonバインディングを追加する方法を誰を知っていますか?それも可能ですか?

私は文書を読んで、多くの検索をしましたが、これについては何も見つかりません。他の多くの人たちもTensorflowをKivy(AndroidとiOSの両方)に取り入れることに興味があることを知っていましたが、これまで誰もそれをやっていないようです。人々は、アンドロイド用のPythonレシピを作成する必要があると言っていますが、レシピの第一歩はPythonバインディングでAndroid用にビルドすることです。

答えて

3

注:私はTensorflowpypiから判断


で働いたことはない、ここだけの依存性の問題がnumpyのかもしれませんが、recipe for itがあります。したがって、NumPy、がありますが、にはTensorflow自体のレシピはありません。今何?

答えはdocumentationのレシピ作成方法です。

最初に私は既に働いているレシピ、実際にはC/C++で動作するもの、そしてではなくCythonでCythonのレシピを作るのが簡単ですあなたがコードを作ったとしても)。

これらは私がTensorflowのためのレシピを作成するための基本的な石を考慮したレシピです:

それらのそれぞれがお手伝いします部を有し、作業レシピを組み立てる。今、バインディングに問題があります。 manylinux車輪がありますが、Androidの場合(の場合はすべてなど)、その状態でお手伝いできない可能性が最も高いです。したがって、ソースからビルドする必要があり(明らかに)、その部分にはa whole folderがあります。

あなたのコードはbazelです。 build_pip_package.shには、バゼルの事に関連する行がたくさんあります。あなたはレシピの仕組みを理解した後

ので、2つの可能性があります

  • コードのあなたの部分は、実際に何かをして、アンドロイド
  • あなたのコードのためにそれを構築する価値がない

コードが実際に動作する場合は、既に作成済みのsetup.pyファイルをシンプルに組み合わせることができますうまくいけば、ちょうどもう1つのプラットフォームチェックで(そして正しいbazelバイナリIを仮定して)レシピを作成してください。既にsetup.pyファイルがあるので、パッケージファイルはAndroid用にコンパイルされたPythonに移動する必要があります。

一方、上に貼り付けたコードに無駄がある場合は、コードをコンパイルして、+ 0123を直接レシピとしてsetup.pyに再作成することになります。あなたがソースからビルドするために必要なコンパイルの手順に精通していない場合、私は本当にプロセスを羨ましくはありません。


また、最終的なAPKのサイズに言及するのは良いことかもしれません。 Windows用の13MBの小さなホイールでPyPI上のTensorflowを見ることができます。しかし、Manylinuxホイールは巨大な(37-42MB)です.Tensorflow以外のものをインストールする予定があるなら、Android用の2つのサイズの間にサイズがあると思います。あなたはそれを携帯電話に依存関係としてドラッグしなければならないNumPyが常にあります。つまり、〜50MB + APKファイルが得られますが、それは本当に必要ではないかもしれません(あなたに依存します)。

This piece of codeは、Pythonに関連するレポでも役に立ちます。

+0

詳細な説明をありがとうございます。非常に徹底的。残念なことに私の問題はPythonバインディングを含めるためにTensorflowをAndroid用にコンパイルすることです(私のコンパイルコードを参照してください)。私はTensorflowの人たちがStackoverflowで提起される質問を示唆し、それらを監視するはずだから、ここにチップを入れることを望んでいました。いずれの場合も、Kivyレシピの一般的な戦略の詳細な説明に感謝します。 –

関連する問題