![](/img/trans.png)
[英]How tensorflow graph regularization (NSL) affects triplet semihard loss (TFA)
[英]Additional optimizer affects regularization loss
我正在使用现有的tensorflow模型。
对于网络的一部分,我想设置与其余网络不同的学习率。 比方说, all_variables
是由的variables_1
和variables_2
,然后我想改变的变量学习率variables_2
。
用于设置优化器,计算和应用渐变的现有代码基本上如下所示:
optimizer = tf.train.MomentumOptimizer(learning_rate, 0.9)
grads_and_vars = optimizer.compute_gradients(loss, all_variables)
grads_updates = optimizer.apply_gradients(grads_and_vars, global_step)
我已经尝试按照该方案创建第二个优化器。 但是,对于调试,我将两个学习率设置为相等,并且正则化损失的减少非常相似。
是否不可能创建第二个优化器optimizer_new
,并仅将variables_1
和variables_2
grads_and_vars
分别应用apply_gradients
? 即,而不是有这条线
grads_updates = optimizer.apply_gradients(grads_and_vars, global_step)
一个可以使用
grads_updates = optimizer.apply_gradients(grads_and_vars['variables_1'], global_step)
grads_updates_new = optimizer_new.apply_gradients(grads_and_vars['variables_2'], global_step)
最后, train_op = tf.group(grads_updates, grads_updates_new)
。
但是,仍存在正则化损失行为。
我通过这篇文章中的评论找到了原因。 在我的情况下,为apply_gradients
的global_step参数提供两次“ global_step
”是没有意义的。 由于learning_rate
以及优化器参数取决于global_step
,因此训练过程(尤其是正则化损失行为)有所不同。 感谢y.selivonchyk指出这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.