额外的优化器影响正则化损失
Additional optimizer affects regularization loss
我正在使用现有的张量流模型。
对于网络的一部分,我想设置与其余网络不同的学习率。假设 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
? IE。而不是这条线
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)
。
但是,正则化损失行为仍然存在。
我通过 . In my case, it doesn't make sense to to supply twice "global_step
" for the global_step argument of apply_gradients
. As the learning_rate
and therefore the optimizer arguments depends on global_step
, the training process, especially regularization loss behaviour, differs. Thanks to y.selivonchyk 中的评论发现了原因,指出了这一点。
我正在使用现有的张量流模型。
对于网络的一部分,我想设置与其余网络不同的学习率。假设 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
? IE。而不是这条线
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)
。
但是,正则化损失行为仍然存在。
我通过 global_step
" for the global_step argument of apply_gradients
. As the learning_rate
and therefore the optimizer arguments depends on global_step
, the training process, especially regularization loss behaviour, differs. Thanks to y.selivonchyk 中的评论发现了原因,指出了这一点。