我构建了 tensorflow 源文件,利用 tfcompile 将 TensorFlow 图编译为可执行代码。该图是之前预训练的著名的神经风格迁移图。我遵循https://www.tensorflow.org/versions/master/experimental/xla/tfcompile中的指南,使用提前 (AOT) 编译器从样式转换图中生成带有 tfcompile 的可执行二进制文件。
首先,我在运行 ./configure 以启用 XLA 支持时选择了“启用 XLA”。然后使用“*.config.pbtxt”文件配置子图以识别提要和提取。之后,我使用 //tensorflow/compiler/aot/tfcompile.bzl 中定义的 tf_library 构建宏将图形转换为 cc_library。cc_library 包含一个包含从图形生成的代码的目标文件,以及一个可以访问生成代码的头文件。我编写了一个 jni-native cc 代码来调用这个 cc_library 并使用 //tensorflow/contrib/android/BUILD 环境来 bazel 将此代码构建到 android 的原生 .so 库。我使用 android studio 运行带有这个 .so 库的应用程序。我预计运行这个原生的时间。因此库嵌入了预训练的 tensorflow 图以将照片转换为另一种风格,这比使用从 github 下载的 tensorflow nightly 二进制文件直接运行图更快。然而,事实是,AOT 编译的原生 .so 库比直接运行 tensorflow 二进制文件调用预训练的 pb 图要慢 4.64 倍。我的操作有问题吗?