主页(http://www.kuwanit.com):分享 | TensorFlow Lite应用案例
尽量用后者,因为`tf.Variable()`对 variable scope 无效。
1. `tf.Variable()` 和 `tf.get_variable()`
4. toolchain -- 模型转换与整合
bash
需要模型拆分的原因一般有 3 个:
TF Lite based model performance metrics
cd tensorflow/kika
prod_output, prod_state = prod_cells(prod_embs, 。..)
第二个是一个包含 toco 的小启动器,因为 toco 从命令列呼叫起来的话要填的参数比较多,所以这个启动器会使用 tensorflow 查询一些可以自动填的参数,来降低手动填的参数数量。
有些 op 有 optional argument,如果不指定的话,可能会自动引入一些额外的 op 來代入默认值。这样偶尔会引入一些 TF Lite 不支持的 op。例如:
prod_inputs = tf.placeholder(‘prod_inputids’, shape=[None], 。..)
组合
补充
vars = tf.get_variable(。..)
axis = tf.sub(tf.shape(logits), tf.constant(1))
在客户端实现基于 TF Lite 模型的部署之后,我们分别测试了同一模型在 TF 完全版(TF Mobile)和 TF Lite 10, 000 次 Inference 的资源消耗情况,如下图所示。主要的 Metrics 包括内存占用 (memory),运行时间(speed)和静态链接库的大小 (image size)。
对于后端的模型算法工作者来说,写出上述的训练代码是一件非常自然的事情。如果我们既想保持后端代码的普适和自然度,又想要快速实现能够在客户端部署,需要作出如下的事情:
这类 op 暂时没有系统性的方式可以辨认 (spec 上没写),只能等到试错的时候才会被发现。
模型拆分
embs = tf.nn.embedding_lookup(vars, inputs)
prod_inputs = tf.placeholder(‘prod_inputids’, shape=[None], 。..)
发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。