【问题标题】:Using different optimizers to train the same layer in tensorflow使用不同的优化器在 tensorflow 中训练同一层
【发布时间】:2019-03-29 03:55:52
【问题描述】:

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

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

因此,我在一开始就使用了优化器来训练整个模型。然后我创建了一个新的优化器来微调全连接层以及训练最后一层。

结果出现以下错误:

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

我知道出错的原因。第二个优化器试图创建一个内核来使用相同的名称更新权重;因为第一个优化器创建了同名内核。

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

非常感谢任何帮助!

【问题讨论】:

    标签: tensorflow optimization


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多