Я создал простую модель MLP Regression Keras с 4 входами и одним выходом. Я преобразовал эту модель в TFlite, сейчас просто пытаюсь узнать, как ее протестировать на студии Android. Как я могу ввести несколько 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"))
Если ваши входные данные на самом деле представляют собой 4 отдельных тензора, вам следует использовать API Interpreter.runForMultipleInputsAndOutputs, который позволяет использовать несколько отдельных входов. См. Также этот пример из репозитория TensorFlow Lite. Например:
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);
Это мой код:
Object[] inputArray = {iArray[0],iArray[1]};
tflite.runForMultipleInputsOutputs(inputArray,outputMap);
1-й объект работает нормально. Но второй объект в функции не работает в Tensor getInputTensor(int index) при таком условии:
if (index >= 0 && index < this.inputTensors.length)
Но индекс равен 1. Есть ли проблемы с моим кодом?