TfLite Android:多输出模型 运行 推理时的垃圾值

TfLite Android: Garbage values when running inference for multiple output model

我有一个模型可以预测尺寸为 160X160 的输入图像的年龄和性别。我正在创建一个字节缓冲区来将图像输入到模型中,当使用只有一个输出的模型时一切正常。

但是当我使用 tflite.runForMultipleInputsOutputs() 时,我得到的垃圾值的形式是 -> [[F@e233 等

我已经详细了解了文档和示例应用程序,并且已经坚持了将近 2 天。请帮忙。

我在下面发布我的代码以供参考。

该模型有 2 个输出:

编辑:

年龄 -> float32 [1, 101]

性别 -> float32 [1,2]

P.S - 我现在没有对输出做任何事情。我只想看看模型的结果。

String classifyImage(Bitmap bitmap){
        try{
            ByteBuffer byteBuffer = convertBitmaptoByteBuffer(bitmap);

            float[][] out_gender = new float[1][2];
            float[][] out_age = new float[1][101];
            Object[] input = {byteBuffer};

            Map<Integer, Object> outputs = new HashMap();
            outputs.put(0, out_age);
            outputs.put(1, out_gender);

            interpreter.runForMultipleInputsOutputs(input, outputs);
            
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }

首先,我建议您 double-check 模型的输出与输出图相匹配。性别是 101 维数组,年龄是二维数组,这对我来说似乎很奇怪。你有没有把它们搞混?

其次,我认为您是在对浮点数组调用 toString()。考虑使用例如System.out.println(Arrays.deepToString(out_age)); 展示结果。