将BATCH_TO_SPACE_ND和SPACE_TO_BATCH_ND添加到TensorFlow Lite

时间:2019-02-13 12:01:28

标签: android c++ tensorflow nnapi

NNAPI 1.1已经支持SPACE_TO_BATCH_ND和BATCH_TO_SPACE_ND ops,但是当前的TFLite代码尚未实现。参见:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/nnapi_delegate.cc#L607

我试图这样添加它们:

case tflite::BuiltinOperator_SPACE_TO_BATCH_ND:
   nn_op_type = ANEURALNETWORKS_SPACE_TO_BATCH_ND;
   break;
case tflite::BuiltinOperator_BATCH_TO_SPACE_ND:
   nn_op_type = ANEURALNETWORKS_BATCH_TO_SPACE_ND;
   break;

但是它不起作用,当我在android设备上运行它时出现错误消息: E / Utils:输入操作数(3,预期为2)或输出操作数(1,预期为1)无效)进行BATCH_TO_SPACE_ND操作

如何将这些操作正确添加到tensorflow lite?谢谢!

2 个答案:

答案 0 :(得分:0)

找到了答案,要做到这一点,您必须花一些时间来了解他们的代码架构,然后尝试将其从tftensor转换为NNAPI:

例如:ANEURALNETWORKS_BATCH_TO_SPACE_ND(NNAPI)需要2个参数(输入张量,block_shape),而TFLite需要3个args(输入张量,block_shape,crops),因此您需要对其进行处理以绕过错误。

答案 1 :(得分:-1)

上一个答案是正确的。当时NNAPI不支持农作物,因此代码仅委派运算符with zero crops