首页 > 解决方案 > keras和tensorflow lite模型的预测差异

问题描述

根据来自移动加速度计的数据,我创建了 keras 模型来识别人类活动:

model = Sequential()
model.add(Reshape((const.PERIOD, const.N_FEATURES), input_shape=(240,)))
model.add(Conv1D(100, 10, activation='relu', input_shape=(const.PERIOD, const.N_FEATURES)))
model.add(Conv1D(100, 10, activation='relu'))
model.add(MaxPooling1D(const.N_FEATURES))
model.add(Conv1D(160, 10, activation='relu'))
model.add(Conv1D(160, 10, activation='relu'))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(7, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

我已经测试过模型,十个 epoch 后的准确率是 85-90%。我不知道,但是当我将我的模型转换为 TF Lite 并在我的 android 应用程序中运行解释器时,会有可怕的预测。结果不好的原因是什么?keras -> tensorflow -> tensorflow lite line 不兼容?我应该以另一种方式运行它,使用类似 servlet + keras 模型的东西吗?

标签: pythonandroidtensorflowkerastensorflow-lite

解决方案


几点建议:

  1. 尝试使用 https://lutzroeder.github.io/netron/可视化您的 tflite 图。看看有没有什么意外。
  2. 首先尝试使用 tensorflow lite 的 python API 进行调试。将相同的输入输入到 keras 模型和 tflite 模型并比较输出张量。

推荐阅读