2017-07-14 176 views
0

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

回答

0

您是否正在寻找应用正规化的权重?

有一个在一个apply_regularization方法您可以使用的API来完成该操作。

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

+0

谢谢你的回答!我还没有掌握这种方法。此方法可以停止更新零重量吗?我想实施修剪网络并停止训练零重量。 –

0

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

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

相反,你可以使用tf.assign这样的:

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

的会议,这是你问的过程中它会更新变量。

相关问题