如何在张量流中保存和加载 DNN 分类器?

How to save and load a DNN classifier in tensorflow?

如何在 tensorflow 中保存和加载 DNN 分类器?询问给定的默认 Iris 分类器程序。 (https://www.tensorflow.org/get_started/estimator)

保存

您需要做的第一件事是在您的会话中创建一个 tensorflow Saver 对象:

with tf.Session(graph=graph) as sess:
    saver = tf.train.Saver()

然后,在训练之后 - 仍在会话中 - 调用 save 方法:

saver.save(sess, 'path/to/model_file')

您不需要指定文件扩展名,因为 save 方法会为您完成。

加载

要恢复模型,您打开一个新会话(当然没有图表)并按如下方式操作:

with tf.Session() as sess:
    new_saver = tf.train.import_meta_graph('path/to/model_file.meta')
    new_saver.restore(sess, tf.train.latest_checkpoint('path/to/model_dir/'))

    # restore the tensors you want (usually, the ones you use in feed_dict and sess.run)
    graph = tf.get_default_graph()
    x = graph.get_tensor_by_name("x:0")
    output = graph.get_tensor_by_name("output:0")

    feed_dict = {x:x}
    [result] = sess.run([output], feed_dict=feed_dict)

您还可以查看 this tutorial 关于保存和恢复 tensorflow 模型的信息。希望对您有所帮助!

要保存和重复使用分类器,您只需使用相同的 model_dir 路径重新加载它即可。

例如,在您想要使用分类器的方法中,您可以使用相同的 model_dir 再次创建分类器。这将从以前的状态重新加载它。

我用它来训练,然后重新加载它来测试单个示例。

tf.estimator.DNNClassifier
(feature_columns=feature_columns, 
hidden_units=[10, 20, 10], 
n_classes=3, 
model_dir="/tmp/iris_model")