如何在应用中加载机器学习模型?

时间:2017-08-31 15:16:54

标签: machine-learning tensorflow

我刚刚进入机器学习,我一直在关注TensorFlow。所以,假设我正在构建一个使用TensorFlow和训练模型的桌面应用程序。我不明白你最终将如何捆绑应用程序。您是否会以某种方式保存已训练模型的状态并将其包含在应用程序中,或者所有用户在首次启动应用程序时是否必须自行重新训练模型?

1 个答案:

答案 0 :(得分:2)

HBO有一篇很棒的文章:How HBO’s Silicon Valley built “Not Hotdog” with mobile TensorFlow, Keras & React Native。不过,它深入研究了细节。

机器学习模型(如神经网络)由其结构及其参数/权重定义。结构由您硬编码,权重在训练中学习。如果你有两个,你可以在任何地方重新创建模型并运行你的预测或你正在做的任何事情。

让我们调用您的用户将运行“客户端”的应用。不,客户不必重新学习模型,除非您特别想要它们。培训是一个昂贵的过程,需要大量的数据集,内存和处理能力。您在行动中看到的很多很酷的模型,比如在FaceApp或其他应用程序上使用的模型,可能需要在庞大的集群上进行数周的培训才能完成。更不用说他们的数据集可能有很多千兆字节。

对于很多深度学习模型,即使学到的权重本身可能太大,和/或甚至只需要一次正向传递所需的处理能力对于移动电话或笔记本电脑来说也是太多了。这就是为什么许多ML应用程序实际上没有使用他们的应用程序发布模型,而是让模型在服务器上运行。然后客户端简单地发送输入并在几秒钟后接收输出。这样你就省去了一些麻烦,但失去了离线功能并为托管付出了相当多的代价。

因此,让我们忘记托管模型一秒钟,并假设您有一个小型,轻量级的模型,您希望随应用程序一起提供。最简单的方法是将权重存储在文件中,然后将其与您的应用程序一起打包。但是当然有很多图书馆和工具可以帮助你。有关TF示例,请查看TensorFlow mobile:https://www.tensorflow.org/mobile/

相关问题