【发布时间】:2016-10-01 07:28:52
【问题描述】:
我想训练一个模型来分类 90K 个标签,所以我使用了所谓的增量训练。
我最初训练模型只对 1K 个标签进行分类,然后添加另外 1K 个标签并将最终 FC 层的输出维度扩展到 2K,并训练更多的 epoch。之后我再添加 1K 个标签,依此类推...
请注意,它不是微调,其中最后一个 FC 之前的所有参数都是固定的,因此我可以缓存输出特征。就我而言,我需要更新每个阶段的所有变量。
我设计的解决方案是:
- 训练 1K 个标签。
- 保存模型。
- 修改图,让最后一个FC层输出2K维度。
- 初始化所有变量
- 加载上一个检查点,这将覆盖所有参数,但最后一层的权重。
- 再次训练并重复
所以这里的重点是实现部分还原检查点。
在 TensorFlow 中,我使用这样的代码来加载检查点:
saver.restore(sess, "model.ckpt")
但是,当形状不匹配时,它会失败。
任何人都可以提供帮助,无论是如何部分恢复/初始化变量,还是如何以其他方式实施增量训练?
【问题讨论】:
标签: tensorflow