Как бороться с результатом org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs () - PullRequest
0 голосов
/ 18 февраля 2019

Я бегу posenet (который является CNN) на Android с tflite.Модель имеет несколько выходных массивов со следующими размерами: 1x14x14x17, 1x14x14x34, 1x14x14x32, 1x14x14x32

Поэтому при запуске интерпретатора Java tflite с

import org.tensorflow.lite.Interpreter;
Interpreter tflite;
...
tflite.runForMultipleInputsOutputs(inputs,outputs)

я могу получить доступ к четырем выходным тензорам с помощью tflite.getOutputTensor(i) или с помощью outputs.get(i) (с i el. [0,3]), как outputs - это HashMap, заполненный java.nio.HeapByteBuffer объектами.

Как я могу преобразовать эти выходные данные или tflite-тензоры в многомерные массивы Java(что-то вроде float[][][][];), чтобы иметь возможность выполнять математические вычисления на них?

1 Ответ

0 голосов
/ 18 февраля 2019

Определение выходных данных, как показано ниже, позволяет работать с собственными Java-массивами, что я и хотел:

out1 = new float[1][14][14][17];
out2 = new float[1][14][14][34];
out3 = new float[1][14][14][32];
out4 = new float[1][14][14][32];
Map<Integer, Object> outputs = new HashMap<>();
outputs.put(0, out1);
outputs.put(1, out2);
outputs.put(2, out3);
outputs.put(3, out4);
...