如何在tensorflow中保存和加载DNN分类器?请求给出默认的Iris分类器程序。 (https://www.tensorflow.org/get_started/estimator)
答案 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。我希望它有所帮助!