寡人刚接触这个玩意,mobilenet顾名思义就是将模型放在mobile中的net,也就是可以落地的网络,这个mobilenet是用的slim这个东西,但这个东西只发现了CNN的应用落地,如果有RNN的就好了。
slim=tf.contrib.slim
请
充
值
查
看
完
整
版
,
我
要
积
分
!
!
!
当然有的说mobilenet是keras中的application,当然这个应该是模型的直接应用,也就是套用上面的
keras.applications.mobilenet_v2
不妨试试mobilenet的框架直接转换tflite,转换工具在此,请使用合规途径访问。遵纪守法,做守法好公民。官方说明如下:
Note: 不是所有的 TensorFlow 模型都能在 TensorFlow Lite 中运行,
因为解释器(interpreter)只支持部分(a limited subset)TensorFlow 运算符(operations)。
这也就是为啥RNN的一些Op不支持转换为tflite的缘故。这些Ops或许在CNN中也可能出现,避免的方法就是直接用mobilenet,或者你等待官方支持更多Ops,这一点在我的issue中已经得到确认。然而项目不等人,想好好干活必须采用mobilenet,否则滚蛋吧。要你何用??
下面是官方给出的操作,寡人copy过来了。其实这种转换方法就是我在这个博文中提到的第三种转换方法。
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
另外官方给出的转换工具在此,其实我之前也提到了。也就是我提到的三种方法的第二种。
当然这些方法已经证实,我的模型不能通过此方法转换为tflite,SO我就是给了资源链接供参考转换模型之用。
tflite的调用方法java版本为:详见官方
try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) {
interpreter.run(input, output);
}
有些不支持的Ops官方给出了选择运算符,也就是一部分用tflite的Op,一部分还使用tf的Op,那么就要在编译中载入tf的库。
官方给出的方法如下:我尝试了,我的情况下依旧不可行,人生艰难啊。
--target_ops=TFLITE_BUILTINS,SELECT_TF_OPS
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS]
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
另外有相关问题可以加入QQ群讨论,不设微信群
QQ群:868373192
语音深度学习及信号处理群