【问题标题】:TfLite Android: Garbage values when running inference for multiple output modelTfLite Android:为多个输出模型运行推理时的垃圾值
【发布时间】:2020-09-01 07:16:13
【问题描述】:

我有一个模型可以预测尺寸为 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 "";
    }

【问题讨论】:

    标签: android tensorflow tensorflow-lite


    【解决方案1】:

    首先,我建议您仔细检查模型的输出是否与输出映射匹配。对我来说,性别是一个 101 维数组而年龄是一个二维数组,这对我来说似乎很奇怪。你有没有把它们搞混了?

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

    【讨论】:

    • 感谢@Joel 的建议。年龄和性别形状是我的错误。我已经纠正了。我会尝试字符串建议并让你知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多