ckpt
常规模型保存,模型结构,数据,运算图分开保存。常用在训练阶段使用。
h5
keras前端保存的模型格式,有两种,纯数据和数据+网络结构,可以被tf调用。可以用软件查看内部数据,并进行修改。
pb
用于移动端端/server端都有使用,包括结构+数据,不可以修改内部,也就是为什么叫做凝固图了。可以做量化模型处理,目前只支持int8和float16两种格式量化。
pbtxt
pb的扩展格式,可以被修改内容,用记事本就可以修改。
tflite
一种实验的数据格式,也叫轻量化模型,多用于手机,平板,树莓派之类的边缘设备。可以用轻量级的`tflite_runtime`包来调用。
支持int8和float16两种格式量化。
说明
pb和tflite都可以做模型量化,pb量化用到tensorflow-serving服务器,好像量化后,只能在linux短的tf调用,而tflite轻量化-量化用到移动端,在ios系统上调用好像要经过处理,要不会报错。
import tensorflow as tf
saved_model_dir = "./pb_model"
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir,
input_arrays=["inputs"],
input_shapes={"inputs": [1, 784]},
output_arrays=["predictions"])
converter.optimizations = ["DEFAULT"]
converter.post_training_quantize = True # 就这个行
tflite_model = converter.convert()
open("tflite_model_v3/eval_graph.tflite", "wb").write(tflite_model)