使用不同的优化器在张量流中训练同一层

时间:2018-10-24 16:33:42

标签: tensorflow optimization

我有一个模型,该模型由卷积层和完全连接的层组成。我在fer数据集上训练了该模型。这被认为是输出数量等于8的分类问题。

训练完此模型后,我保留了完全连接的层,并仅用具有3个输出的新层替换了最后一层。因此,目的是在训练输出层的同时对完全连接的层进行微调。

因此,我在开始时就使用了优化器来训练整个模型。然后,我创建了一个新的优化程序,以对完整连接的层进行微调,并训练最后一层。

结果,我得到了以下错误:

ValueError: Variable Dense/dense/bias/Adam/ already exists,

我知道出错的原因。第二个优化器正在尝试创建一个用于使用相同名称更新权重的内核。因为同一个内核是由第一个优化器创建的。

因此,我想知道如何解决此问题。有没有办法删除与第一个优化程序关联的内核?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

这可能是由于两个优化程序都使用(相同)默认名称'Adam'引起的。为避免这种冲突,您可以给第二个优化器一个不同的名称,例如

opt_finetune = tf.train.AdamOptimizer(name='Adam_finetune')

这应该使opt_finetune以不同的名称创建其变量。请让我们知道这是否有效!