繁体   English   中英

向Tensorflow contrib.learn.Estimator添加L2正则化

[英]Add L2 Regularization to Tensorflow contrib.learn.Estimator

我想将L2正则化添加到自定义的contrib.learn估计器中,但我不知道如何轻松地做到这一点。

有没有一种方法可以将L2正则化添加到我忽略的现有Estimators(例如DNNClassfier)中?

我可以想到的是,将L2范数添加到自定义估算器中的唯一方法是编写一个具有变化的成本函数的新标头。 但是我想有一个更简单,更优雅的解决方案来解决这个常见问题。 有人遇到过同样的问题吗?

编辑:我想我找到了解决方案。 我可以使用gradient_clip_norm裁剪渐变。 这样,梯度应该受到全局L2范数的限制,并且基本上我具有L2正则化。 我的想法正确吗?

AFAIK,您不能在提供的估计量上合并l1或l2正则化,例如tf.estimator.Estimatortf.contrib.learn.Estimator的子类。 尽管如此,您仍可以使用tf.layers api创建自定义的estimator ,其解释如下: https : tf.layers 使用自定义的estimator您可以应用正则化器。 请使用以下答案: https : tf.layers来使用tf.layers api规范权重。 诸如tf.layers.dense()类的函数具有kernel_regularizer字段,您可以在其中调整权重矩阵。

并且请注意,L2正则化与梯度范数裁剪不同。 在范数裁剪中,对目标参数的范数有特定的限制,而在L2正则化中,没有这样的限制,这是一个软约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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