"倒带"张量流训练步骤

时间:2016-10-27 16:23:12

标签: tensorflow

我偶尔遇到一个跟随张量流和随机梯度下降训练的问题,我加载了一个对我的优化操作造成严重破坏的小批量,将其推向Nans。当然,这会在训练过程中引发错误并迫使我重新开始。即使我在try语句中包装了优化操作,但在引发异常时,损坏已经完成,我需要重新启动。

有没有人有一个很好的方法,基本上,当它遇到错误时,将优化重新回到有效状态?我认为你可以使用检查点,但保存/恢复的文档是如此不稳定,以至于我不确定......

2 个答案:

答案 0 :(得分:2)

正如您所建议的那样,检查站就是这样做的。您案件的关键步骤如下:

首先在定义图表后创建一个保护程序对象:

saver = tf.train.Saver(max_to_keep=5, keep_checkpoint_every_n_hours=1)

接下来,在训练期间间歇地写出检查点:

for step in range(max_steps):

    ... some training steps here

    # Save the model every 100 iterations
    if step % 100 == 0:
        saver.save(sess, checkpoint_dir, global_step=step)

最后,当你发现错误时,重新加载最后一个好的检查点:

# this next command restores the latest checkpoint or explicitly specify the filename if you want to use some other logic
restore_fn = tf.train.latest_checkpoint(FLAGS.restore_dir)
print('Restoring from %s' % restore_fn)
saver.restore(sess, restore_fn)

答案 1 :(得分:0)

回答另一个问题:

您使用的是哪种优化工具?

大跳跃,就像你可以通过简单的梯度下降一样,不应该使用渐变剪辑或步长有限的优化器(如Adam)。