Как протестировать модель Tensorflowlite с несколькими входами?

Я создал простую модель 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"))
2
0
2 510
2

Ответы 2

Если ваши входные данные на самом деле представляют собой 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. Есть ли проблемы с моим кодом?

Другие вопросы по теме