【发布时间】:2017-02-09 06:28:08
【问题描述】:
我正在尝试训练 word2vec 模型,并希望将嵌入用于另一个应用程序。由于稍后可能会有额外的数据,并且我的计算机在训练时很慢,我希望我的脚本稍后停止并恢复训练。
为此,我创建了一个保护程序:
saver = tf.train.Saver({"embeddings": embeddings,"embeddings_softmax_weights":softmax_weights,"embeddings_softmax_biases":softmax_biases})
我保存了嵌入、softmax 权重和偏差,以便稍后恢复训练。 (我认为这是正确的方法,但如果我错了,请纠正我)。
不幸的是,当使用此脚本恢复训练时,平均损失似乎又上升了。
我的想法是这可以归因于我正在使用的 AdaGradOptimizer。最初,外部乘积矩阵可能会设置为全零,在我的训练之后它将被填充(导致学习率较低)。
有没有办法保存优化器状态以便以后继续学习?
【问题讨论】:
-
保护程序应该做你想做的事。优化器的状态也应该在那里。也许您正在重新初始化它?
-
你确定优化器的状态在那里吗?在这种情况下,我只传递嵌入、softmax_weights 和 softmax_biases,对吗?尝试将优化器添加到 train.Saver 会出错。至于重新初始化它:我确实初始化了几个变量,但不是我保存的那个。 AdaGrad 优化器的变量在哪里?我可以在训练之前/之后以及加载之前/之后检查它们吗?
-
为了完整起见,我在此主题上添加了指向您的 github 问题的链接:github.com/tensorflow/tensorflow/issues/5595
标签: tensorflow