Java 如何处理org.tensorflow.lite.Interpreter.runformMultipleInputSoutputs()的结果

Java 如何处理org.tensorflow.lite.Interpreter.runformMultipleInputSoutputs()的结果,java,android,arrays,tensorflow,tensorflow-lite,Java,Android,Arrays,Tensorflow,Tensorflow Lite,我正在用tflite在android上运行posenet(CNN)。 该模型具有多个具有以下维度的输出数组: 1x14x17、1x14x14x14x34、1x14x14x14x32、1x14x14x14x32 因此,使用 import org.tensorflow.lite.Interpreter; Interpreter tflite; ... tflite.runForMultipleInputsOutputs(inputs,outputs) 我可以使用tflite.getOutputSe

我正在用tflite在android上运行posenet(CNN)。 该模型具有多个具有以下维度的输出数组:
1x14x17、1x14x14x14x34、1x14x14x14x32、1x14x14x14x32

因此,使用

import org.tensorflow.lite.Interpreter;
Interpreter tflite;
...
tflite.runForMultipleInputsOutputs(inputs,outputs)
我可以使用
tflite.getOutputSensor(i)
outputs.get(i)
(带i el.[0,3])访问四个输出张量,因为
outputs
是一个
HashMap
填充了
java.nio.HeapByteBuffer
对象


如何将这些输出或tflite张量转换为java多维数组(类似于
float[]];
),以便能够对其执行数学计算?

通过定义如下输出,可以使用本机java数组,这正是我想要的:

out1 = new float[1][14][14][17];
out2 = new float[1][14][14][34];
out3 = new float[1][14][14][32];
out4 = new float[1][14][14][32];
Map<Integer, Object> outputs = new HashMap<>();
outputs.put(0, out1);
outputs.put(1, out2);
outputs.put(2, out3);
outputs.put(3, out4);
out1=新浮点数[1][14][14][17];
out2=新浮动[1][14][14][34];
out3=新浮动[1][14][14][32];
out4=新浮动[1][14][14][32];
映射输出=新的HashMap();
输出。输出(0,输出1);
输出。输出(1,输出2);
输出(2,输出3);
输出(3,输出4);
//*1*输出张量的形状
int[]输出形状;
//*1*输出张量的类型
数据类型OutputDataType;
//多张量就绪存储
outputProbabilityBuffers=新HashMap();
ByteBuffer x;
//对于每个模型的张量(对于这个tflite模型,有getOutputEnsorCount()张量)
对于(int i=0;i
示例输出:

Classifier: Created a buffer of 11264 bytes for tensor 0.
Classifier: Created a buffer of 11264 bytes for tensor 1.
Classifier: Created a buffer of 4 bytes for tensor 2.
Classifier: Created a buffer of 11264 bytes for tensor 3.
Classifier: Created a tflite output of 4 output tensors.
并以这种方式使用它:

Object[]inputs={your_regular_input};
tflite.runForMultipleInputsOutputs(输入、输出概率缓冲区);
输出:

val locations = outputs.getValue(0).asFlowArray(),
val classes = outputs.getValue(1).asFlowArray(),
val scores = outputs.getValue(2).asFlowArray(),
val detections = outputs.getValue(3).asFlowArray()