Sim*_*one 70 machine-learning keras keras-layer
我注意到在Keras中没有更多的weight_regularizer可用,并且取而代之的是有活动和内核规范化器.我想知道:
Mic*_*tti 75
活动正则化器作为网络输出的函数起作用,主要用于规范隐藏单元,而weight_regularizer,正如其名称所说,对权重起作用,使它们衰减.基本上,您可以将正则化损失表示为output(activity_regularizer)或权重(weight_regularizer)的函数.
新的kernel_regularizer替换weight_regularizer- 虽然从文档中不是很清楚.
从定义kernel_regularizer:
kernel_regularizer:应用于
kernel权重矩阵的正则化函数(参见正则化器).
而且activity_regularizer:
activity_regularizer:应用于图层输出的正则化函数(其"激活").(见规范者).
重要提示编辑:请注意,是在一个错误activity_regularizer这是唯一的固定在Keras的2.1.4版本(至少Tensorflow后端).实际上,在旧版本中,活动正则化函数应用于图层的输入,而不是应用于输出(图层的实际激活,如预期).因此,如果您使用的是较旧版本的Keras(2.1.4之前),请注意活动正则化可能无法按预期工作.
你可以在GitHub上看到提交
五个月前,FrançoisChollet为活动规范制定者提供了一个修正案,然后将其纳入Keras 2.1.4
Ale*_*eft 11
这个答案有点晚了,但是对将来的读者很有用。因此,正如他们所说,必要性是发明之母。我只在需要时才了解它。
上面的答案并没有真正说明差异的原因,因为它们最终都会影响权重,因此惩罚权重本身或图层的输出之间有什么区别?
答案是:我遇到了一种情况,网的权重很小且很好,介于[-0.3]到[+0.3]之间。
所以,我真的不能惩罚他们,他们没有错。内核正则化器是没有用的。但是,该层的输出为HUGE,以100为单位。
请记住,该图层的输入也很小,总是小于一。但是,这些较小的值与权重相互作用,从而产生大量的输出。在这里,我意识到我需要的是活动正则化器,而不是内核正则化器。这样,我要为那些较大的输出惩罚该层,我不在乎权重本身是否很小,我只是想阻止它达到这种状态,因为这会饱和我的S型激活并导致大量其他麻烦,例如消失梯度和停滞。
| 归档时间: |
|
| 查看次数: |
27846 次 |
| 最近记录: |