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));
展示结果。
我有一个模型可以预测尺寸为 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));
展示结果。