TensorFlow Lite:使用Mobilenet_V2进行批处理

时间:2018-11-20 11:07:38

标签: android tensorflow kotlin tensorflow-lite

我想在TensorFlow Lite中使用Mobilenet_V2_1.0_224进行批处理。

我尝试了这个答案(https://stackoverflow.com/questions/52783747/how-to-do-batching-with-tensorflow-lite/53125376#53125376),但这仅适用于Inception_V4。

当我尝试对Mobilenet使用大于1的批处理大小(在本例中为batch_size 2)时,出现以下错误:

  ComposedException 1 :
    java.lang.NullPointerException: Internal error: Cannot allocate memory for the interpreter: tensorflow/contrib/lite/kernels/reshape.cc:68 num_input_elements != num_output_elements (2002 != 1001)Node 64 failed to prepare.

    at org.tensorflow.lite.NativeInterpreterWrapper.allocateTensors(Native Method)
    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:118)
    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:168)
    at org.tensorflow.lite.Interpreter.run(Interpreter.java:145)

编辑: 这是导致此错误的tflite代码:

    DIM_BATCH_SIZE = 4
    var tfliteOptions: Interpreter.Options = Interpreter.Options()
    tfliteOptions.setUseNNAPI(true)
    var interpreter = Interpreter(loadModelFile(assetManager, "mobilenet_v2_1.0_224.tflite")!!, tfliteOptions)    
    interpreter!!.resizeInput(0,intArrayOf(DIM_BATCH_SIZE,224,224,3))

    interpreter!!.run(imgData, labelProb)

imgData是一个ByteBuffer,其中包含经过预处理的图像,labelProb是用于预测的FloatArray。

0 个答案:

没有答案