2017-09-20 10 views
0

TensorFlow Androidデモに基づいて簡単なAndroidアプリを作成しようとしています。私が使用しているモデルでは、デフォルトでTensorFlow aarには含まれていないカーネルOpが必要です。これは、ソースからライブラリをコンパイルする道を私に導きました。Bazelを使用してAndroid用にビルドした後にTensorFlowエラーが発生しました

bazelをネイティブのビルドツールとして使用して、apkにgradleをビルドさせました。しかし、.pbファイル(protobuff形式のモデル)からモデルをロードしようとすると、そのモデルは「有効なTensorFlowグラフのシリアル化:無効なGraphDef」というエラーでクラッシュします。

誰でもこの問題を経験しましたか?私は何かが正しくコンパイルされていないと推測していますが、私は間違いを探し始める場所が本当にわかりません。

/usr/local/bin/bazel build -c opt 
tensorflow/examples/android/app:tensorflow_native_libs 
--crosstool_top=//external:android/crosstool --cpu=arm64-v8a 
[email protected]_tools//tools/cpp:toolchain 

注:

はここBazelは、私が使用しているコマンドを構築している(便宜上複数行に、デモからほとんどそのまま引っ張っ)build.gradleファイル、およびBazel BUILDファイルはほとんど手つかずのまま。私はいくつかのパスを変更しました(私はアンドロイドの例をサブプロジェクトapp/に移動し、マルチプロジェクトのグラデルセットアップを可能にしました)。 (

  • は、いくつかの研究の後、私はこのクラッシュは、バッファ・サイズで問題になることが示唆TensorFlowSharpのgithubのページで問題を発見し、私のモデルはかなり大きいです:

    物事は私が試してみました〜93MB)。しかし、はるかに小さなネットワーク(1.6MB)で、私は同じエラーが発生します。

  • 私はまた、gradleビルドの一部として.pbファイルの圧縮をオフにしてみました。

  • 私は今まで構築したTensorflow android aarの既存の.soファイルを置き換えようとしましたが、同じエラーが発生します。

  • .soファイルをオフラインでコンパイルし、適切なアンドロイドプロジェクトディレクトリに手動で配置します。

答えて

0

これは私が取り組んでいたTensorFlowコミットの問題でした。上流のTensorFlowレポからの最新の変更を統合したとき、エラーは消え去った。

誰もがこの問題に遭遇するとは想像もできません。もしあなたがそうしたり、同様にあいまいなエラーに遭遇したら、新しいバージョンのTensorFlowにアップデートすることがあなたの解決策かもしれません。あるいは、私よりも賢くなり、安定版のライブラリを構築することもできます。

関連する問題