keras h5 model 转换为tflite

在移动端的模型,若选择tensorflow或者keras最基本的就是生成tflite文件,以本文记录一次转换过程。

环境

  1. tensorflow 1.12.0
  2. python 3.6.5
  3. h5 model saved by `model.save('tf.h5')`

直接转换

`tflite_convert --output_file=tf.tflite --keras_model_file=tf.h5`

output

`TypeError: __init__() missing 2 required positional arguments: 'filters' and 'kernel_size'`

先转成pb再转tflite

```

git clone [email protected]:amir-abdi/keras_to_tensorflow.git

cd keras_to_tensorflow

python keras_to_tensorflow.py --input_model=path/to/tf.h5 --output_model=path/to/tf.pb

tflite_convert \

  --output_file=tf.tflite \

  --graph_def_file=tf.pb \

  --input_arrays=convolution2d_1_input \

  --output_arrays=dense_3/BiasAdd \

  --input_shape=1,3,448,448

```

参数说明,input_arrays和output_arrays是model的起始输入变量名和结束变量名,input_shape是和input_arrays对应

官网是说需要用到tenorboard来查看,一个比较trick的方法

先执行上面的命令,会报convolution2d_1_input找不到,在堆栈里面有convert_saved_model.py文件,get_tensors_from_tensor_names()这个方法,添加`print(list(tensor_name_to_tensor))` 到 tensor_name_to_tensor 这个变量下面,再执行一遍,会打印出所有tensor的名字,再根据自己的模型很容易就能判断出实际的name。



参考:

https://www.jianshu.com/p/2eb65ea15afd

tflite_convert官方文档

你可能感兴趣的:(TensorFlow,深度学习)