将pb文件转化为tflite文件

最近在做一个关于MobileNet的卡片识别任务,最后的目的在于把训练好的模型移植到手机端,关于的移植的步骤,网上已经讲了很多了,我就不多讲述了,这里推荐一个博客我的模型移植就是参考这里的,同时我的模型是直接通过TFhub上的MobileNet迁移学习得到的。迁移之后会生成一个pb文件,然而pb文件又不能直接使用Tensorflow-lite这一个神器,因此就必须把pb模型转化为tflite模型,在转化的时候猜到了一个坑,苦苦搜寻终于在StackOverflow上找到了解决办法,附上链接。也贴上我错误的代码:

import tensorflow as tf

in_path=r'D:\tmp_mobilenet_v1_100_224_classification_3\output_graph.pb'
out_path=r'D:\tmp_mobilenet_v1_100_224_classification_3\output_graph.tflite'

input_tensor_name='Placeholder'
input_tensor_shape={'Placeholder':[1,224,224,3]}

class_tensor_name='final_result'


convertr=tf.lite.TFLiteConverter.from_frozen_graph(in_path,input_arrays=input_tensor_name
                                                   ,output_arrays=class_tensor_name
                                                   ,input_shapes=input_tensor_shape)

# convertr=tf.lite.TFLiteConverter.from_saved_model(saved_model_dir=in_path,input_arrays=[input_tensor_name],output_arrays=[class_tensor_name])
tflite_model=convertr.convert()


with open(out_path,'wb') as f:
    f.write(tflite_model)

最后报错信息为

ValueError: Invalid tensors 'P''l''a''c''e''h''o''l''d''e''r' were found."

 经过检查可以发现是在

input_tensor_name='Placeholder'
class_tensor_name='final_result'

当中少了两个中括号,加上去之后就可以正常生成tflite模型。

正确的代码是:

import tensorflow as tf

in_path=r'D:\tmp_mobilenet_v1_100_224_classification_3\output_graph.pb'
out_path=r'D:\tmp_mobilenet_v1_100_224_classification_3\output_graph.tflite'

input_tensor_name=['Placeholder']
input_tensor_shape={'Placeholder':[1,224,224,3]}

class_tensor_name=['final_result']


convertr=tf.lite.TFLiteConverter.from_frozen_graph(in_path,input_arrays=input_tensor_name
                                                   ,output_arrays=class_tensor_name
                                                   ,input_shapes=input_tensor_shape)

# convertr=tf.lite.TFLiteConverter.from_saved_model(saved_model_dir=in_path,input_arrays=[input_tensor_name],output_arrays=[class_tensor_name])
tflite_model=convertr.convert()


with open(out_path,'wb') as f:
    f.write(tflite_model)

 

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值