我创建了一个简单的MLP回归Keras模型,其中包含4个输入和一个输出。我将这个模型转换为TFlite,现在我正试图找出如何在android studio上对其进行测试。如何输入多个4D对象进行Java测试? 尝试运行模型时,以下给出错误:
try{
tflite = new Interpreter(loadModelFile());
}
catch(Exception ex){
ex.printStackTrace();
}
double[][] inp= new double[1][4];
inp[0][1]= 0;
inp[0][0] = 0;
inp[0][2]= 0;
inp[0][3]=-2.01616982303105;
double[] output = new double[100];
tflite.run(inp,output);
编辑: 这是我最初创建的模型:
# create model
model = Sequential()
model.add(Dense(50, activation="tanh", input_dim=4,
kernel_initializer="random_uniform", name="input_tensor"))
model.add(Dense(50, activation="tanh",
kernel_initializer="random_uniform"))
model.add(Dense(1, activation="linear",
kernel_initializer='random_uniform', name="output_tensor"))
答案 0 :(得分:0)
如果输入实际上是4个独立的张量,则应使用Interpreter.runForMultipleInputsAndOutputs
API,该API允许多个独立的输入。另请参阅TensorFlow Lite储存库中的this example。例如:
double[] input0 = {...};
double[] input1 = {...};
Object[] inputs = {input0, input1};
double[] output = new double[100];
Map<Integer, Object> outputs = new HashMap<>();
outputs.put(0, output);
interpreter.runForMultipleInputsOutputs(inputs, outputs);
答案 1 :(得分:0)
这是我的代码:
Object[] inputArray = {iArray[0],iArray[1]};
tflite.runForMultipleInputsOutputs(inputArray,outputMap);
第一个对象工作正常。但是在这种情况下,函数中的第二个对象在Tensor getInputTensor(int index)
中失败:
if(index >= 0 && index < this.inputTensors.length)
但是索引是1。我的代码有问题吗?