如何在TensorFlow中停止训练一些特定的权重

时间:2017-07-14 01:35:40

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

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

2 个答案:

答案 0 :(得分:0)

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

API中有一个apply_regularization方法可用于实现此目的。

请参阅:How to exactly add L1 regularisation to tensorflow error function

答案 1 :(得分:0)

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

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

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

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

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