【问题标题】:How to stop training some specific weights in TensorFlow如何在 TensorFlow 中停止训练某些特定权重
【发布时间】:2017-07-14 01:35:39
【问题描述】:

我刚刚开始学习 TensorFlow,但遇到了一些问题。在训练循环中,我想忽略小权重并停止训练它们。我已将这些小权重分配为零。我搜索了 tf API,发现tf.Variable(weight,trainable=False) 可以停止训练重量。如果权重值为零,我将使用此函数。我尝试使用.eval(),但出现异常ValueError(“无法使用eval()评估张量:无默认值”。我不知道在训练循环中如何获取变量的值。另一种方法是修改tf.train.GradientDescentOptimizer(),但我不知道该怎么做。有没有人实现了这个代码或任何其他建议的方法?提前谢谢!

【问题讨论】:

    标签: python-3.x tensorflow deep-learning


    【解决方案1】:

    您是否希望对权重应用正则化?

    API 中有一个 apply_regularization 方法,您可以使用它来完成此操作。

    见:How to exactly add L1 regularisation to tensorflow error function

    【讨论】:

    • 感谢您的回答!我没有掌握这种方法的窍门。这种方法可以停止更新零权重吗?我想实现一个修剪网络并停止训练零权重。
    【解决方案2】:

    我不知道停止训练某些变量的任何用例,可能这不是你应该做的。

    无论如何,调用tf.Variable()(如果我没听错的话)对你没有帮助,因为在定义图形时它只被调用一次。第一个参数是initial_value:顾名思义,它只在初始化期间分配。

    相反,您可以像这样使用tf.assign

    with tf.Session() as session:
      assign_op = var.assign(0)
      session.run(assign_op)
    

    它将在会话期间更新变量,这是您所要求的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多