Как мне сохранить и загрузить классификатор DNN в тензорном потоке? Запрашивая это для заданной программы классификатора Iris по умолчанию. (https://www.tensorflow.org/get_started/estimator)

0
Abhisek Roy 3 Янв 2018 в 12:01

2 ответа

Лучший ответ

Сохранить

Первое, что вам нужно сделать, это создать внутри сеанса объект Tenorflow 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)

Вы также можете проверить это руководство о сохранении и восстановлении моделей тензорного потока. Я надеюсь, что это помогает!

3
Arnaldo Gualberto 3 Янв 2018 в 12:13

Чтобы сохранить и повторно использовать классификатор, вы можете просто перезагрузить его с тем же путем model_dir.

Например, в методе, который вы хотите использовать классификатор, вы можете просто снова создать классификатор с тем же model_dir. Это перезагрузит его из того состояния, в котором он был ранее.

Я использую это для обучения, а затем перезагружаю для тестирования отдельных примеров.

tf.estimator.DNNClassifier
(feature_columns=feature_columns, 
hidden_units=[10, 20, 10], 
n_classes=3, 
model_dir="/tmp/iris_model")
4
Edward Dunn 22 Мар 2018 в 19:34