我想在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。