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

时间:2020-09-01 07:16:13

标签: android tensorflow tf-lite

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

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

我已仔细阅读了文档和示例应用程序的详细信息,并坚持了将近2天。请帮忙。

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

该模型有2个输出:

编辑:

age-> 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 "";
    }

1 个答案:

答案 0 :(得分:2)

首先,我建议您仔细检查模型的输出是否与输出映射匹配。我觉得奇怪的是,性别是101维数组,而年龄是2维数组。你有没有机会把它们混在一起?

其次,我认为您是在float数组上调用//Create a welcome message and direct them to the main page app.get('/', (req, res) => { res.send( '<h2 style="font-family: Malgun Gothic; color: midnightblue ">Welcome to Edureka Node.js MongoDB Tutorial!!</h2>' ,'Click Here to go to <b> <a href="/course">Course Page</a> </b>'); }); app.use(bodyparser.json()); 。考虑使用例如toString()展示结果。