关于在Tensorflow中实施培训过程的正确方法

时间:2016-08-07 21:56:54

标签: tensorflow deep-learning

在阅读一些Tensorflow实现时,在我看来,有两种方法可以实现培训过程。

例如in this implementation,培训细分就像这样。

with sess.as_default():
sess.run(init_op)
sess.run(init_local_op)  # we need this only with tensorflow 0.10rc
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)

try:
    while not coord.should_stop():
        step += 1
        x, y = sess.run([train_image_batch, train_label_batch])
        train_step.run(feed_dict={keep_prob: 0.75,
                                  x_: x, y_: y})

        if step % TRAIN_BATCH_SIZE == 0:
            x, y = sess.run([valid_image_batch, valid_label_batch])
            result = sess.run([merged, accuracy], feed_dict={keep_prob: 1.0,
                                                             x_: x, y_: y})
            summary_str = result[0]
            acc = result[1]
            writer.add_summary(summary_str, step)
            print("Accuracy at step %s: %s" % (step, acc))


except tf.errors.OutOfRangeError:
    x, y = sess.run([valid_image_batch, valid_label_batch])
    result = sess.run([accuracy], feed_dict={keep_prob: 1.0,
                                             x_: x, y_: y})
    print("Validation accuracy: %s" % result[0])

finally:
    coord.request_stop()
    coord.join(threads)
    sess.close()

在我看来,coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=sess, coord=coord)用于控制培训过程。这与实施cifar10 example中包含的培训流程的方式有所不同,这在我看来更为直接,类似于for step in xrange(FLAGS.max_steps):...。我的问题是,这两种方法之间有什么不同吗?什么时候用哪个?感谢。

0 个答案:

没有答案