我拥有:Tensorflow中训练有素的递归神经网络。
我想要的:一个可以尽快运行此网络的移动应用程序(仅限推理模式,无需培训)。
我相信有多种方法可以实现我的目标,但我希望您提供反馈/更正和补充,因为我之前从未这样做过。
有关移动应用程序的一些详细信息。应用程序将对用户进行录音,进行一些处理(如Speech2Text)并输出文本。我不想找到一个“足够快”的解决方案,但是最快的选择,因为这将发生在非常大的声音文件上。因此几乎所有的速度提升都很重你有什么建议,我该如何处理这个问题?
最后一个问题:如果我试图聘请某人帮助我,我应该寻找Android / iOS,Embedded或Tensorflow类型的人吗?
答案 0 :(得分:1)
<强> 1。 TensorflowLite
Pro:它在Android上使用GPU优化;很容易合并到Swift/Objective-C app和very easy into Java/Android(只需在gradle.build中添加一行);您可以将TF模型转换为CoreML
缺点:如果您使用C ++库 - 将TFLite作为库添加到Android / Java-JNI会有一些问题(没有JNI构建此类库的本地方法); iOS上没有GPU支持(社区适用于MPS集成)
这里也提到了TFLite演讲到文本demo app,它可能很有用。
<强> 2。 TensorRT
它使用TensorRT使用cuDNN,它使用CUDA库。有CUDA for Android,不确定它是否支持整个功能。
第3。自定义代码+库
我建议你使用Android NNet library和CoreML;如果您需要更深入 - 您可以使用Eigen库进行线性代数。但是,编写自己的自定义代码从长远来看并不是有益的,你需要支持/测试/改进它 - 这是一个巨大的交易,比性能更重要。
重新实施一切
此选项与前一个选项非常相似,实现您自己的RNN(LSTM)应该没问题,只要您知道自己在做什么,只需使用其中一个线性代数库(例如Eigen)。
总体建议是:**