为 runForMultipleInputsOutputs 分配内存时发生

我在为 Android Java 的 TFLITE 解释器准备输出时遇到错误。该模型有 1 个输入和 4 个输出。


interpreter.runForMultipleInputsOutputs(input, map_of_indices_to_outputs);


E/Run multiple: Internal error: Unexpected failure when preparing tensor allocations: tensorflow/lite/kernels/tile.cc:53 num_dimensions != num_multipliers (1 != 2)Node number 4 (TILE) failed to prepare.

输出要求是 4 个浮点数组的列表:


[ [1x1],[1x2], [1x2], [1x2] ]

python 中预测的输出是:


In [56] output = model.predict(new_observation_scaled)


Out[56]: 

[array([[0.]], dtype=float32),

 array([[137.66626, 335.7148 ]], dtype=float32),

 array([[0.16666616, 0.40643442]], dtype=float32),

 array([[9.9915421e-01, 8.4577635e-04]], dtype=float32)]

所以我用JAVA准备了一个对象列表:


float [][] output0 = new float [1][1];

float [][] output1 = new float [1][2];

float [][] output2 = new float [1][2];

float [][] output3 = new float [1][2];

Object[] outputs = {output0,output1,output2,output3};


Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();

map_of_indices_to_outputs.put(0, output0);

map_of_indices_to_outputs.put(1, output1);

map_of_indices_to_outputs.put(2, output2);

map_of_indices_to_outputs.put(3, output3);

你能帮我找出错误吗?


侃侃尔雅
浏览 149回答 1
1回答

繁星淼淼

我得到了问题的解决方案:以同样的方式,输出需要一个列表,输入也需要一个列表:Object[] outputs = {output0,output1,output2,output3};Object[] inputs = {input};interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java