Я исправил ошибку, но уверен, что это не лучший способ сделать это.
Keras MobilenetV2 input_shape: (nBatches, 224, 224, nChannels).
Я просто хочу предсказать одно изображение, поэтому nBaches == 1, и я работаю в режиме RGB, поэтому nChannels == 3
// Nasty nasty, but works. nBatches == 2? -- _cropped.shape() == (244, 244), 3 channels.
float [][][][] _inputValue = new float[2][_cropped.cols()][_cropped.rows()][3];
// Fill the _inputValue
for(int i = 0; i < _croppedFace.cols(); ++i)
for (int j = 0; j < _croppedFace.rows(); ++j)
for(int z = 0; z < 3; ++z)
_inputValue [0][i][j][z] = (float) _croppedFace.get(i, j)[z] / 255; // DL works better with 0:1 values.
/*
Output val, has this shape, but I don't really know why.
I'm sure that one's of that 2's is for nClasses (I'm working with 2 classes)
But I don't really know why it's using the other one.
*/
float[][] outputVal = new float[2][2];
// Tensorflow lite interpreter
_tflite.run(_inputValue , outputVal);
На питоне имеет такую же форму:
Предсказание Python:
[[XXXXXX, YYYYY]] <- Конечно, для последнего слоя, который я сделал, это всего лишь прототип NN. </p>
Надеюсь, кто-то получил помощь, а также что кто-то может улучшить ответ, потому что это не очень оптимизировано.