繁体   English   中英

附加的优化器会影响正则化损失

[英]Additional optimizer affects regularization loss

我正在使用现有的tensorflow模型。

对于网络的一部分,我想设置与其余网络不同的学习率。 比方说, all_variables是由的variables_1variables_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_1variables_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM