如何使用相同的测试数据来测试一个.tflite模型,以证明它的行为与原始模型相同?

31
我已经生成了一个基于训练模型的.tflite模型,我想测试这个tflite模型是否能够给出与原始模型相同的结果。给它们相同的测试数据并获得相同的结果。
3个回答

33

您可以使用 TensorFlow Lite Python 解释器 来测试您的 tflite 模型。

它允许您在 Python shell 中输入数据,并直接读取输出,就像您只是使用普通的 TensorFlow 模型一样。

我已在此处回答了这个问题

您还可以阅读此TensorFlow Lite 官方指南 ,以获取详细信息。

您还可以使用Netron来可视化您的模型。它允许您直接加载 .tflite 文件并检查您的模型架构和模型权重。


这对我有用,谢谢。顺便说一下,TensorFlow Lite模型与Python模型的结果不同,差异非常大,例如Python准确度为79%,而tflite准确度为50%。您知道如何改善吗?也许是参数或更好的导出功能,我目前正在使用frozen graph中的toco转换。 - Jorge Jiménez
1
https://dev59.com/mOk5XIcBkEYKwwoY7OHv - Jorge Jiménez
1
我不熟悉tflite,很抱歉无法帮助您。我建议比较这两个模型在相同输入数组下的输出数组。实际上,当我将一个模型转换为tflite时,我也遇到了这个问题,最后发现我使用了不同的checkpoint文件,导致了问题。 - Jing Zhao

2
在TensorFlow代码库中有一个tflite_diff_example_test。它生成随机数据并将相同的数据输入TensorFlow和TensorFlow Lite,然后比较它们之间的差异是否在一个小阈值内。
你可以从Github检出TensorFlow代码,并使用bazel运行它:
``` bazel run //tensorflow/contrib/lite/testing:tflite_diff_example_test ```
然后你会看到需要传递哪些参数。

谢谢你的回答。所以我必须从源代码编译TensorFlow,对吗?还有其他方法可以尝试使用它吗?(我已经尝试使用bazel编译Tensorflow,但总是出现错误。) - Jorge Jiménez
你能告诉我如何测试你的答案吗?听起来这可能是我需要的,但如果不编译所有的tensorflow源代码,我该如何测试它呢?它一直报错。 - Jorge Jiménez

2
除了@miaout17提供的答案,为了调试/理解您的tflite模型(这是问题的精髓),您可以:

谢谢您的回答。使用flatc,我已经从tflite模型创建了一个json文件。有了这个文件,我该如何测试模型的行为或者是否能够给出与原始模型相同的结果呢? - Jorge Jiménez
不确定您是否可以直接使用json进行测试。您可以使用flatc从flatbuffer生成一个python API,然后使用python API将相同的数据提供给TF和TFLite模型,并检查答案。 - Pannag Sanketi
我试图将不同的分类器导出为tflite格式,而不仅仅是DNN。请问如何选择输入或输出张量,能否帮助我一下? 您是如何知道应该选择:dnn/input_from_feature_columns/input_layer/concat:0 作为输入张量?或者 dnn/logits/BiasAdd:0 作为输出张量?我已经在线性分类器中打印了所有可能的张量,但我不知道该选择哪个才能使其正常工作。 您能看一下这个链接吗:https://stackoverflow.com/questions/51267129/how-to-know-which-tensor-to-choose-from-the-list-of-tensor-names-in-graph - Jorge Jiménez
https://dev59.com/mOk5XIcBkEYKwwoY7OHv - Jorge Jiménez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接