Tensorflow Session.Run在Android设备上运行时给出空输出张量,但在Ubuntu上运行时工作正常

时间:2016-09-12 02:07:37

标签: android c++ api tensorflow

我有一个经过预先训练的Tensorflow protobuf,我从C ++ API加载并使用Bazel构建。当我在Ubuntu上运行生成的可执行文件时,我得到了预期的输出张量。但是当我使用Bazel为Android编译完全相同的代码时,我得到空输出张量。

我用来获取输出的代码(在Ubuntu和Android中使用相同的代码):

auto statusPred = session->Run(run_options, input, vNames, {}, &answer, &run_metadata);printLog(answer.size());

答案在Android上的大小为0,但在运行可执行文件时具有正确的预期大小,也是在UBuntu机器上使用Bazel构建的。

我错过了一些基本的东西吗?在Ubuntu和Android上进行计算的方式是否存在差异,因为输出张量是空的?

1 个答案:

答案 0 :(得分:0)

通过在文件组android_extended_ops_group1下的文件tensorflow / core / kernels / BUILD中添加" cwise_op_floor.cc"来修复它。我看到最新版本将此Op包含在同一文件组中:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/BUILD#L987