1

我正在尝试在 x86_64 PC 上使用 tensorflow-lite 测试我的模型。

我编写了一个 c++ 测试代码并成功解释了给定的 mobilenet 模型并执行了推理。我想将模型中的一些操作更改为我的自定义操作。在此之前,我检查了是否可以正确地将 .tflite 转换为 json。我所做的是使用 flatc 和 tensorflow lite 的架构(schema.fbs)将 mobilenet.lite 更改为 mobilenet.json,并将 mobilenet.json 重新更改为 mobilenet_new.lite。但是,当我测试 mobilenet_new.lite 时,出现如下错误: tensorflow/contrib/lite/kernels/kernel_util.cc:35 std::abs(input_product_scale - bias_scale) <= 1e-6 * std::min(input_product_scale, bias_scale ) 不是真的。

当我将 mobilenet_new.lite 转换为 mobilenet_new.json 时,两个 JSON 文件是相同的,没有任何区别。为什么会发生此错误?如果参数值相同,这怎么可能?

如果你有这方面的知识,请给我帮助。

谢谢

4

1 回答 1

0

我已经解决了这个问题。

当我调试这个问题时,它是flatbuffer问题。制作 json 文件时,flatbuffer 将浮点数更改为字符串。因此,它变成精度为 6 的定点值。这使得浮点值舍入。因此,当我转换 tflite -> json -> tflite 时,两个 tflite 文件之间发生了一些变化。

于 2018-02-13T23:43:07.403 回答