恢复保存的变量进行训练后,保存的tensorflow NLP模型什么也不输出

时间:2018-07-30 18:46:59

标签: tensorflow machine-learning nlp deep-learning seq2seq

在受github存储库启发后,我为聊天机器人构建了seq2seq模型。为了训练聊天机器人,我使用了我的Facebook聊天记录。因为我的大部分聊天都像用英语写的印地文单词。我不得不从头开始训练单词嵌入。我知道该模型将需要大约30-40小时(50000次迭代,批量大小为24)的cpu训练。因此,我学会了使用

  

tf.train.saver()

保存变量并在将来恢复它们的方法。

要查看我的模型的进度,我制作了模型以在第250次迭代时输出五个输入文本序列的答复。 在训练开始时,我得到的是空白输出(因为令牌是最常见的)。但是经过数千次迭代后,它开始提供最常用的单词作为输出。经过90,000次迭代后,它提供了一些不合逻辑但又不同的输出。因此,我在那里停止了培训。

现在,当我从最新的检查点恢复变量时。我再次得到空行作为输出。这是正常现象还是我的代码中存在某种错误?

代码: Full code

代码段: (从最新检查点还原的代码)

sess = tf.Session()
saver = tf.train.Saver()
saver.restore(sess, tf.train.latest_checkpoint('models/'))
sess.run(tf.global_variables_initializer())

(用于在迭代循环中保存变量的代码)

    if (i % 10000 == 0 and i != 0):
        savePath = saver.save(sess, "models/pretrained_seq2seq.ckpt", global_step=i)

1 个答案:

答案 0 :(得分:1)

兄弟,每次使用全局值初始化程序时,它都会重置:/。训练模型时,仅第一次使用sess.run(tf.global)。用保护程序保存模型后,将其注释掉。因此,下次还原模型时,它将不会重置,并且应该可以正常工作。