tf.Keras模型转换为pb文件

TensorFlow2.0以上版本。

转换过程中的api要用2.0以下的版本。

tf.Keras模型转换为pb文件 - 知乎def keras_model_to_frozen_graph(): """ convert keras h5 model file to frozen graph(.pb file) """ import tensorflow as tf from tensorflow.python.framework import graph_io from…https://zhuanlan.zhihu.com/p/77225005

def keras_model_to_frozen_graph():
    """ convert keras h5 model file to frozen graph(.pb file)
    """
    import tensorflow as tf
    from tensorflow.python.framework import graph_io
    from tensorflow.keras.applications.inception_v3 import InceptionV3

    def freeze_graph(graph, session, output_node_names, model_name):
        with graph.as_default():
            graphdef_inf = tf.graph_util.remove_training_nodes(graph.as_graph_def())
            graphdef_frozen = tf.graph_util.convert_variables_to_constants(session, graphdef_inf, output_node_names)
            graph_io.write_graph(graphdef_frozen, "tmp", os.path.basename(model_name) + ".pb", as_text=False)

    tf.keras.backend.set_learning_phase(0) # this line most important
    model = load_net()
    model_name = './models/mymodel.h5'
    model.load_weights(model_name)
    session = tf.keras.backend.get_session()
    freeze_graph(session.graph, session, [out.op.name for out in model.outputs], model_name)

如上代码:加载模型根据模型格式,可以修改。

转换模型:    session = tf.keras.backend.get_session()等需要更改为2.0版本中的2.0以下的兼容版本的接口。

=================================

网上很多说, 直接使用save_model,也是保存的pb格式,实际很多转换工具,对这种格式根本转换不来,需要使用2.0以下的pb格式。

你可能感兴趣的:(#,TensorFlow,keras,tensorflow,深度学习)