tensorflow转换ckpt为savermodel模型的实现
ckpt转换成SavedModel
convert_ckpt_to_savermodel.py
importtensorflowastf importsys 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) withtf.compat.v1.Session(graph=graph,config=config)assess: #Restorefromcheckpoint loader=tf.compat.v1.train.import_meta_graph(trained_checkpoint_prefix+'.meta') loader.restore(sess,trained_checkpoint_prefix) #ExportcheckpointtoSavedModel 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模型
checkpointhello_model.data-00000-of-00001hello_model.indexhello_model.meta
python./convert_ckpt_to_savermodel.pyhello_model./save
会在save目录下生成
save
├──saved_model.pb
└──variables
├──variables.data-00000-of-00001
└──variables.index
补充知识:tensorflowserving模型转换
tfserving是一款灵活的高性能机器学习服务系统,专为生产环境而设计。通过它可以轻松部署新算法和实验,同时保持服务框架和API不变。它提供了与tensorflow模型的即是可用集成,但很容易扩展以便服务其他类型的模型和数据。
tfserving的安装过程这里不多说,大家可以百度。
此处主要介绍tensorflow模型在docker中转换时的修改内容。
修改inception_saved_model.py文件中的内容,主要包括:image_size,NUM_CLASSES,SYNSET_FILE,METADATA_FILE变量的内容,必要时修改model_version,NUM_TOP_CLASSES。
修改inception_model.py文件中的内容,包括从nets文件夹中导入所需网络的信息,修改inference函数中对应的网络名称。
fromnets.inception_v1importinception_v1,inception_v1_arg_scope withslim.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编译的配置项
exportTF_NEED_CUDA=1
bazelbuild-copt--config=cudatf_models/slim:inception_saved_model
ps,关于gpu的设置如下:
exportCUDA_VISIBLE_DEVICES='0,1'#shell环境 importos os.environ["CUDA_VISIBLE_DEVICES"]="0,1"#python环境
以上这篇tensorflow转换ckpt为savermodel模型的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。