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
ファイルをオフラインでコンパイルし、適切なアンドロイドプロジェクトディレクトリに手動で配置します。