直接java调用tflite_c++调用tflite实战

一,概述

深度学习模型在移动端的应用越来越多,tensorflow lite就是专门为tensorflow模型在移动端上线推断设计的框架。tensorflow 官方提供了不少cv的tflite模型,以及c++调用的例子。我们在这里以一个nlp的例子来从零实现到c++调用,并且以调用so动态库,用cmake编译的方式的来实现调用tflite模型进行预测。

二,模型训练

采用的例子是一个类似语言模型的例子,用上文预测当前词,详情见nlp_tflite/char_rnn。

在模型的构造过程中要注意一些问题,因为tensorflow lite为了轻量化(编译后的so文件只有2.7M大小),所以很多tensorflow中的operation都不支持,所以在编写模型的过程中需要注意,来说下当前碰到的点,当然肯定还有很多的坑没有碰到。

1),显示确定计算图中所有tensor的维度

我们在搭建模型时在使用tf.placeholder传入数据的时候,有时候会将维度指定为None,在用python训练和预测时会根据你传入的数据去动态的确定这个维度的值,如果你想转换成tflite模型,就必须确定输入的tensor的维度。因为在执行转换到tflite的时候需要明确指定输入的tensor的维度,否则会将第一个维度定为1(tflite会默认所有输入的tensor的第一个维度时batch_size,并赋值为1)。

计算图中的tensor同样要确定维度,一般来说输入的维度确定了,中间维度一定会是确定,但也有一些特殊的情况,这种我就碰到过,比如我传入一个标量sequence_len到模型中,标量的值是动态变化的(如序列

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值