欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

DeepLearning:模型之间的相互转化(keras-hdf5→Tensorflow-pb文件)

发布时间:2025/3/20 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 DeepLearning:模型之间的相互转化(keras-hdf5→Tensorflow-pb文件) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

【写在前面】
在深度学习的应用中,我们往往需要将Python中训练好的模型文件部署到实际的应用测试中,所以自然而然我们就需要进行模型之间的相互转换,例如本人在Python环境下训练好的hdf5文件,现在要加载到C++的Tensorflow部署环境完成实际的测试工作。

【转换步骤】

1、获取keras的hdf5模型
2、选择样本完成keras的hdf5模型测试,记录测试结果
3、通过代码实现hdf5模型到tensorflow pb模型的转换
4、再次输入样本,完成pb模型测试,并将测试结果和hdf5模型的测试结果进行比较,评价模型转换是否成功。

【转换实战】
1.hdf5模型的生成和测试大家根据自己的训练过程和结果完成;
2.hdf5模型的转化;

# 2022-1-4 # dragon——cheng # function: keras hdf5模型文件转换为Tensorflow pb模型 # _*_ coding:utf-8 _*_ # 定义层from keras.models import load_model import tensorflow as tf import os import os.path as osp from keras import backend as K# 路径参数 input_path = 'E:\\projects\\PycharmProjects\\densenet\\keras\\model\\model1102\\checkpoint-128e-val_acc_0.74.hdf5'from keras.models import load_model import tensorflow as tf from keras import backend as K from tensorflow.python.framework import graph_io# from keras.models import TripletModeldef freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True):from tensorflow.python.framework.graph_util import convert_variables_to_constantsgraph = session.graphwith graph.as_default():freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or []))output_names = output_names or []output_names += [v.op.name for v in tf.global_variables()]input_graph_def = graph.as_graph_def()if clear_devices:for node in input_graph_def.node:node.device = ""frozen_graph = convert_variables_to_constants(session, input_graph_def,output_names, freeze_var_names)return frozen_graph"""----------------------------------配置路径-----------------------------------""" h5_model_path = 'E:\\projects\\PycharmProjects\\densenet\\keras\\model\\model1102\\checkpoint-128e-val_acc_0.74.hdf5' # Keras训练模型 output_path = 'E:\\projects\\PycharmProjects\\densenet\\keras\\model\\/' # 转换后pb模型的地址 pb_model_name = 'pb_model.pb' # 转换后pb模型的文件名"""----------------------------------导入keras模型------------------------------""" K.set_learning_phase(0) net_model = load_model(h5_model_path)"""----------------------------------保存为.pb格式------------------------------""" sess = K.get_session() frozen_graph = freeze_session(K.get_session(), output_names=[net_model.output.op.name]) graph_io.write_graph(frozen_graph, output_path, pb_model_name, as_text=False)

【转换测试】
skimage库安装:
conda install scikit-image

总结

以上是生活随笔为你收集整理的DeepLearning:模型之间的相互转化(keras-hdf5→Tensorflow-pb文件)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。