在TensorFlow中预训练神经网络

时间:2017-01-08 23:42:14

标签: tensorflow neural-network deep-learning

我正在训练深度神经网络。直接培训整个网络很困难,因此,我更喜欢逐层培训。首先,我训练一个具有单个隐藏层的网络。之后,我使用tf.train.Saver保存模型。下次,我通过调用:

恢复变量
saver.restore(sess, "runs/simple-model.ckpt")

当然,这次架构发生了变化,因为我在隐藏层和输出层之间插入了一个新层,并使用了一个新变量。因此,Tensorflow会抛出错误:Key not found

我的问题是:如何在Tensorflow中逐层训练神经网络?我希望在最终微调整个网络之前做到这一点。 非常感谢。

2 个答案:

答案 0 :(得分:2)

最后,我找到了一个简单的解决方案。在Python中,使用numpy.save可以轻松保存numpy数组。之后,我们可以通过以下方式加载数组:numpy.load。因此,在训练之后,我可以使用var.eval()来评估变量,将其转换为numpy数组,然后保存。

答案 1 :(得分:1)

尝试使用共享权重定义整个网络。 而不是对所有图层进行训练,而是定义一个仅运行所需图层的函数,最后保存整个网络。