问题描述
我正在尝试创建一对Android应用程序:一个用于训练图像分类传输学习模型的应用程序,另一个仅使用训练后的模型进行推理的应用程序。这些应用程序将在单独的设备上运行,其用处在于在功能更强大的设备上训练模型,并能够在功能更差的可穿戴设备上执行该模型的推断。如以下文章中所述,正在实施转移学习:https://blog.tensorflow.org/2019/12/example-on-device-model-personalization.html。
问题是我找不到一种很好的方法来保存经过训练的模型并将其从第一台设备传输到第二台设备。我曾尝试实现蓝牙传输的序列化,但是Android TFL库不易于序列化。以某种方式在Android上保存.tflite文件有多困难?这个功能已经存在,我错过了吗?任何帮助或想法将不胜感激。谢谢!
解决方法
为了传输模型,您应该将其作为二进制文件执行,而不是尝试显式序列化/反序列化。 Android 上有许多不同的库可用于此目的,因此找到适合您的应用的库应该不会太难。
至于加载 TFLite 模型本身并运行推理,可以使用 TFLite Interpreter 类在设备本地执行此操作,只需将其指向设备上的文件即可。您可以在此处找到一个示例:https://www.tensorflow.org/lite/inference_with_metadata/lite_support