通过导出器和tf.train.write_graph()保存模型之间的张量流差异?

时间:2017-01-19 10:57:50

标签: python tensorflow protocol-buffers

通过

保存模型有什么区别
  1. 使用tensorflow服务中指定的导出器:
  2. 例如:

    from tensorflow.contrib.session_bundle import exporter
    #from tensorflow_serving.session_bundle import exporter
    saver = tf.train.Saver(sharded=True)
    model_exporter = exporter.Exporter(saver)
    model_exporter.init(
            sess.graph.as_graph_def(),
            named_graph_signatures={
                'inputs': exporter.generic_signature({'images': x}),
                'outputs': exporter.generic_signature({'scores': y})})
    model_exporter.export(export_path, tf.constant(FLAGS.export_version), sess) 
    
    1. 直接使用tf.train.write_graph()和tf.train.Saver():
    2. 例如:

      with sess.graph.as_default():
          saver = tf.train.Saver()
          saver.save(sess, path, meta_graph_suffix='meta', write_meta_graph=True)
      

      问题继续TensorFlow saving into/loading a graph from a file

2 个答案:

答案 0 :(得分:2)

鉴于Exporter现已正式弃用,用于保存图形和数据的新协议是使用Saver。这是一个很棒的博客,示例代码为:https://blog.metaflow.fr/tensorflow-how-to-freeze-a-model-and-serve-it-with-a-python-api-d4f3596b3adc

答案 1 :(得分:0)

在训练模型并想要提供模型后使用导出器(用于推断)。

当您训练模型时,Saver用于检查点。