1、使用代码转换
训练使用tf1.13.1和keras2.0 转换tflite环境是tf1.13.1,亲测可用
代码如下:
import tensorflow.lite as lite
import argparse
def parse_args():
parser = argparse.ArgumentParser(description='Keras to TensorFlow Lite converter')
parser.add_argument('--input_keras',
required=True,
type=str,
help='The input Keras file model (.h5)')
parser.add_argument('--output_tflite',
required=True,
type=str,
help='The output TensorFlow Lite file model (.tflite)')
parser.add_argument('--post_quantize',
required=False,
type=bool,
help='Use post-quantization')
args = parser.parse_args()
return args
def convert(args):
input_file = args.input_keras
output_file = args.output_tflite
converter = lite.TocoConverter.from_keras_model_file(input_file)
converter.post_training_quantize = True
tflite_model = converter.convert()
open(output_file, "wb").write(tflite_model)
def run():
args = parse_args()
convert(args)
if __name__ == "__main__":
run()
2、使用tflite_convert工具
还没有试过:使用tflite_convert命令工具将keras h5文件转换为tflite文件简易指南 这个教程分两步走,先将h5转换(经代码API转换)为pb模型,再将pb模型转换(经tflite_convert工具转换)为tflite
3、亲测使用tflite_convert工具
模型训练使用tf1.13.1和keras2.0 转换tflite环境是tf1.13.1
3.1 简介
tflite_convert是一个命令行工具,可以先看下将pb模型转tflite的大概流程:TF1.x和TF2.x版本训练的PB模型转Tflite。发现我们在对keras模型转换为tflite时需要知道h5模型的信息:
usage: tflite_convert --output_file OUTPUT_FILE
--keras_model_file KERAS_MODEL_FILE
--output_format TFLITE
--input_arrays INPUT_ARRAYS
--input_shapes INPUT_SHAPES
--output_arrays OUTPUT_ARRAYS
下面我们讲input_arrays 、input_shapes、output_arrays 的获取方法
3.2 模型信息获取
直接给出代码:
from keras.models import load_model
net = load_model(r"model.hdf5", compile=False)
print("inputs info",net.inputs)
print("inputs name",[node.op.name for node in net.inputs])
print("output name",[node.op.name for node in net.outputs])
程序输出:
inputs info [<tf.Tensor 'input_1:0' shape=(?, 64, 64, 1) dtype=float32>]
inputs name ['input_1']
output name ['predictions/Softmax']
实际上你可以直接print(net.inputs) 和print(net.outputs) ,输出为 :0 是考虑到了多输入和多输出模型,但实际上本模型是单输入和单输出,所以也就是'input_1' 和'predictions/Softmax'
3.3 转换
在命令行中执行:
tflite_convert --output_file output.tflite
--keras_model_file newdata_mini_XCEPTION.123-0.70.hdf5
--input_arrays input_1
--input_shapes 1,64,64,1
--output_arrays predictions/Softmax
--output_format TFLITE
如果没有报错,并且存在 output.tflite 文件,应当就是转换成功了 output.tflite 应当存在你执行命令行目录下,或者在执行命令指定绝对路径,方便寻找output.tflite文件。
|