代码之家  ›  专栏  ›  技术社区  ›  gustavz

如何处理org.tensorflow.lite.interpreter.runformultipleinputsoutputs()的结果

  •  0
  • gustavz  · 技术社区  · 6 年前

    我用tflite在android上运行posenet(cnn)。 模型有多个输出数组,具有以下维度: 1x14x14x17, 1x14x14x34, 1x14x14x32, 1x14x14x32

    因此,运行Java TFLITE解释器

    import org.tensorflow.lite.Interpreter;
    Interpreter tflite;
    ...
    tflite.runForMultipleInputsOutputs(inputs,outputs)
    

    我可以访问四个输出张量。 tflite.getOutputTensor(i) 或与 outputs.get(i) (和我一起。[0,3]) outputs 是一个 HashMap 充满 java.nio.HeapByteBuffer 物体。

    如何将这些输出或子矩阵张量转换成Java多维数组(类似于 float[][][][]; )能够对它们进行数学计算?

    0 回复  |  直到 6 年前
        1
  •  0
  •   gustavz    6 年前

    定义如下的输出使您可以使用原生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);