python - 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 模型的东西吗?
解决方案
几点建议:
- 尝试使用 https://lutzroeder.github.io/netron/可视化您的 tflite 图。看看有没有什么意外。
- 首先尝试使用 tensorflow lite 的 python API 进行调试。将相同的输入输入到 keras 模型和 tflite 模型并比较输出张量。
推荐阅读
- swift - VideoComposition 不遵守说明
- c# - UWP 隐藏 TabView 页脚
- amazon-emr - deprecated.legacy-timestamp 应该如何在 Presto 0.220 中工作?
- javascript - 用户关闭 Chrome 选项卡时的自定义模式
- css - 删除多余的 SCSS 导入会影响编译时间吗?
- ruby-on-rails - Rails 6 图像未在 Heroku 暂存中显示
- spring-boot - Hazelcast 确保成员上的近缓存预加载
- powerbi - 为可编辑的 Power BI Embedded 仪表板生成嵌入令牌时出错
- ruby-on-rails - SocketError (getaddrinfo: nodename or servname provided, or not known): Rails Mailer
- apache-nifi - TimeZone 作为 SQLExecute 处理器的 NIFI 参数