我一直试图将我的keras模型.tflite文件放入Google的Tflitecamera演示中。但是我遇到分配错误(无法在具有12288字节的TensorFlowLite缓冲区和具有1072812字节的ByteBuffer之间进行转换)。 我认为这是因为错误的字节缓冲区分配。
ByteBuffer.allocate( DIM_BATCH_SIZE * getImageSizeX() * getImageSizeY() * DIM_PIXEL_SIZE * getNumBytesPerChannel());
任何人都可以对此有所了解。我是TensorFlow的新手。
以下是日志
08-10 11:56:28.905 28066-28066 / android.example.com.tflitecamerademo E / MultiWindowProxy:getServiceInstance失败! 08-10 11:56:35.675 28066-28092 / android.example.com.tflitecamerademo E / AndroidRuntime:FATAL EXCEPTION:CameraBackground 流程:android.example.com.tflitecamerademo,PID:28066 java.lang.IllegalArgumentException:无法在具有12288个字节的TensorFlowLite缓冲区和具有1072812个字节的ByteBuffer之间进行转换。 在org.tensorflow.lite.Tensor.throwExceptionIfTypeIsIncompatible(Tensor.java:175) 在org.tensorflow.lite.Tensor.setTo(Tensor.java:65) 在org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:126) 在org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:168) 在org.tensorflow.lite.Interpreter.run(Interpreter.java:145) 在com.example.android.tflitecamerademo.ImageClassifierFloatInception.runInference(ImageClassifierFloatInception.java:103) 在com.example.android.tflitecamerademo.ImageClassifier.classifyFrame(ImageClassifier.java:136) 在com.example.android.tflitecamerademo.Camera2BasicFragment.classifyFrame(Camera2BasicFragment.java:702) 在com.example.android.tflitecamerademo.Camera2BasicFragment.-wrap0(Camera2BasicFragment.java) 在com.example.android.tflitecamerademo.Camera2BasicFragment $ 4.run(Camera2BasicFragment.java:597) 在android.os.Handler.handleCallback(Handler.java:822) 在android.os.Handler.dispatchMessage(Handler.java:104) 在android.os.Looper.loop(Looper.java:207) 在android.os.HandlerThread.run(HandlerThread.java:61)
答案 0 :(得分:1)
您可以在以下链接中找到此错误的原因:
正如您在第170到181行中看到的那样,如果输出缓冲区的容量不等于字节数,则将发生此错误。