小编Mor*_*itz的帖子

Android TensorFlow Lite 解释器:如何修复“数据类型错误:无法解析 java.lang.Float 的数据类型”

当运行 TFLite 解释器将包含浮点数的 ByteBuffer 作为输入时,应用程序抛出异常:

“数据类型错误:无法解析 java.lang.Float 的数据类型”

模型本身在 Keras 上进行训练,然后转换为 TF,然后转换为 TFLite。

对于转换,我使用了 TF(1.5.0 版)toco 转换器。

toco 的输入参数:

toco --input_file=converted.pb --output_file=model.tflite --input_format=TENSORFLOW_GRAPHDEF --input_shape=1,224,224,3 --input_array=main_input --output_array=main_output/Sigmoid --inference_type=FLOAT --output_format=TFLITE - -input_type=浮动

我还手动创建了一个 float[][][][] 数组,而不是 ByteBuffer,其维度是模型的预期输入:[1,224,224,3]

导致与 ByteBuffer 相同的错误。

请注意,我将浮点数除以 255 以获得 [0,1] 范围内的像素值。

import org.tensorflow.lite.Interpreter;
import java.nio.ByteBuffer;


public Interpreter tflite;

tflite = new Interpreter(loadModelFile(Test_TFLite.this,modelFile));

ByteBuffer bytebuffer_float = convertBitmapToByteBuffer_float(image, 1, 
    224, 3);

float out = 0;

tflite.run(bytebuffer_float,out);


private ByteBuffer convertBitmapToByteBuffer_float(Bitmap bitmap, int 
    BATCH_SIZE, int inputSize, int PIXEL_SIZE) {
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(4 …
Run Code Online (Sandbox Code Playgroud)

java android tensorflow tensorflow-lite

9
推荐指数
1
解决办法
3399
查看次数

标签 统计

android ×1

java ×1

tensorflow ×1

tensorflow-lite ×1