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