如何在tensorflow中保存和加载DNN分类器?

时间:2018-01-03 09:01:58

标签: python tensorflow machine-learning tensor

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

2 个答案:

答案 0 :(得分:4)

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

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

我将此用于培训,然后重新加载以测试单个示例。

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

答案 1 :(得分:3)

保存

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

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

然后,在您的培训之后 - 仍然在会话中 - ,您调用保存方法:

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

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

加载

要恢复模型,您可以打开一个新会话(当然没有图表),并且这样做:

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。我希望它有所帮助!