时间:2021-05-22
ckpt转换成SavedModel
convert_ckpt_to_savermodel.py
import tensorflow as tfimport sys trained_checkpoint_prefix = sys.argv[1]export_dir = sys.argv[2]graph = tf.Graph()config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)with tf.compat.v1.Session(graph=graph, config=config) as sess: # Restore from checkpoint loader = tf.compat.v1.train.import_meta_graph(trained_checkpoint_prefix + '.meta') loader.restore(sess, trained_checkpoint_prefix) # Export checkpoint to SavedModel builder = tf.compat.v1.saved_model.builder.SavedModelBuilder(export_dir) builder.add_meta_graph_and_variables(sess, [tf.saved_model.TRAINING, tf.saved_model.SERVING], strip_default_attrs=True) builder.save()假设已经生成了ckpt模型
checkpoint hello_model.data-00000-of-00001 hello_model.index hello_model.meta
python ./convert_ckpt_to_savermodel.py hello_model ./save
会在save目录下生成
save
├── saved_model.pb
└── variables
├── variables.data-00000-of-00001
└── variables.index
补充知识:tensorflow serving模型转换
tf serving是一款灵活的高性能机器学习服务系统,专为生产环境而设计。通过它可以轻松部署新算法和实验,同时保持服务框架和API不变。它提供了与tensorflow模型的即是可用集成,但很容易扩展以便服务其他类型的模型和数据。
tf serving的安装过程这里不多说,大家可以百度。
此处主要介绍tensorflow模型在docker中转换时的修改内容。
修改inception_saved_model.py文件中的内容,主要包括:image_size,NUM_CLASSES,SYNSET_FILE,METADATA_FILE变量的内容,必要时修改model_version,NUM_TOP_CLASSES。
修改inception_model.py文件中的内容,包括从nets文件夹中导入所需网络的信息,修改inference函数中对应的网络名称。
from nets.inception_v1 import inception_v1, inception_v1_arg_scopewith slim.arg_scope(inception_v1_arg_scope()): logits, endpoints = inception_v1( images, dropout_keep_prob=0.8, num_classes=num_classes, is_training=for_training, scope=scope)另,使用CUDA环境时,需要添加环境及bazel编译的配置项
export TF_NEED_CUDA=1
bazel build -c opt --config=cuda tf_models/slim:inception_saved_model
ps,关于gpu的设置如下:
export CUDA_VISIBLE_DEVICES='0,1' #shell环境 import osos.environ["CUDA_VISIBLE_DEVICES"] = "0,1" #python环境以上这篇tensorflow转换ckpt为savermodel模型的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
由于项目需要,需要将TensorFlow保存的模型从ckpt文件转换为pb文件。importosfromtensorflow.pythonimportpywra
本博客实现将自己训练保存的ckpt模型转换为pb文件,该方法适用于任何ckpt模型,当然你需要确定ckpt模型输入/输出的节点名称。使用tf.train.sav
一、TensorFlow常规模型加载方法保存模型tf.train.Saver()类,.save(sess,ckpt文件目录)方法参数名称功能说明默认值var_l
tensorflow在保存权重模型时多使用tf.train.Saver().save函数进行权重保存,保存的ckpt文件无法直接打开,不利于将模型权重导入到其他
第一步把tensorflow保存的.ckpt模型转为pb模型,并记下模型的输入输出名字.第二步去ncnn的github上把仓库clone下来,按照上面的要求装好