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

时间:2017-10-24 10:57:15

标签: tensorflow tensorflow-serving

我试图导出我的再培训初始模型。我已经读过这个几乎相似的问题here以及那里提到的资源。 但是在导出图表后,variables 文件夹为空,其中应包含保存图表序列化变量的文件(saved_model.pb已正确创建,我会说)。< / p>

我正在使用TensorFlow 1.2.1&amp; 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,它可以正常导出图形和图形变量。但我看到它的培训和出口。在导出图形之前是否有必要进行培训?如果是,我应该怎样做

1 个答案:

答案 0 :(得分:0)

我认为这个问题与冻结的pb模型有关,因为变量在冻结图期间已被转换为常量(参见文档here)。使用初始ckpt模型文件,这些线程可能会有所帮助:# 1938#2045