我注意到Keras中不再使用weight_regularizer,取而代之的是activity和kernel正则化器。我想了解以下几点:
- kernel和activity正则化器之间的主要区别是什么?
- 我可以用activity_regularizer代替weight_regularizer吗?
回答:
活动正则化器作为网络输出的函数起作用,主要用于正则化隐藏单元,而正如其名,weight_regularizer作用于权重(例如,使其衰减)。基本上,你可以将正则化损失表示为输出的函数(activity_regularizer
)或权重的函数(weight_regularizer
)。
新的kernel_regularizer
取代了weight_regularizer
– 尽管文档中对此描述得不是很清楚。
从kernel_regularizer
的定义来看:
kernel_regularizer: 应用于
kernel
权重矩阵的正则化函数(参见regularizer)。
以及activity_regularizer
:
activity_regularizer: 应用于层输出的正则化函数(其“激活”)(参见regularizer)。
重要更新:请注意,activity_regularizer中存在一个错误,这个错误在Keras的2.1.4版本中才被修复(至少在TensorFlow后端的情况下)。实际上,在旧版本中,活动正则化函数被应用于层的输入,而不是应用于输出(层的实际激活,如预期)。因此,如果您使用的是Keras的旧版本(2.1.4之前),活动正则化可能不会按预期工作,请注意。
您可以在GitHub上查看提交记录