构建重新训练的初始 SavedModel 后清空变量文件夹

2024-02-26

我正在尝试导出经过重新训练的初始模型。我读过这个几乎类似的问题here https://stackoverflow.com/questions/43001719/deploy-retrained-inception-savedmodel-to-google-cloud-ml-engine以及那里提到的资源。 但导出图表后,variables 文件夹为空其中应该包含保存图形序列化变量的文件(我想说的是,saved_model.pb 是正确创建的)。

我正在使用 TensorFlow 1.2.1 和 Python 3.5.2。

其实我已经放了一个简单的print(tf.trainable_variables())在会话内部,但它是一个空列表。

这是我导出图表的函数:

def export_tf_model(graph_path, export_dir):    
    builder = tf.saved_model.builder.SavedModelBuilder(export_dir)

    with tf.gfile.FastGFile(graph_path, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        tf.import_graph_def(graph_def, name='')

    with tf.Session() as sess:
        g = sess.graph

        # print variables
        print(tf.trainable_variables())

        in_image = g.get_tensor_by_name('DecodeJpeg/contents:0')
        inputs = {'images': tf.saved_model.utils.build_tensor_info(in_image)}

        out_classes = g.get_tensor_by_name('final_result:0')
        outputs = {'scores': tf.saved_model.utils.build_tensor_info(out_classes)}

        signature = tf.saved_model.signature_def_utils.build_signature_def(
            inputs=inputs,
            outputs=outputs,
            method_name=signature_constants.PREDICT_METHOD_NAME
        )

        builder.add_meta_graph_and_variables(
            sess,
            [tag_constants.SERVING],
            signature_def_map={
                signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature},
        )

        builder.save()

我无法弄清楚问题出在哪里?

我试过了mnist_saved_model.py来自官方教程,它可以很好地导出图形和变量。但我看到它正在培训和出口。导出图之前需要进行训练吗?如果是的话我应该怎么做


我认为这个问题与冻结有关pb模型,变量在冻结图期间已转换为常量(参见文档here https://www.tensorflow.org/mobile/prepare_models#how_do_you_get_a_model_you_can_use_on_mobile)。使用初始ckpt相反,模型文件,也许这些线程有帮助:# 1938 https://github.com/tensorflow/models/issues/1988, #2045 https://github.com/tensorflow/models/issues/2045

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建重新训练的初始 SavedModel 后清空变量文件夹 的相关文章

随机推荐