首页 > 解决方案 > 光谱归一化是否应该作为密集层中的 kernel_regularizer 或 kernel_constraint 参数传递?

问题描述

我不太明白TensorFlow 2.0 中参数kernel_regularizerlayer之间的区别。kernel_constraintDense

我正在尝试将频谱归一化应用于我的网络。两者有什么区别?

我的直觉告诉我 Spectral Norm 是一个约束。但是,如果我将它作为kernel_regularizer参数传递,那会有什么不同呢?

标签: tensorflowtensorflow2.0

解决方案


“我的直觉告诉我 Spectral Norm 是一个约束。但是如果我将它作为 kernel_regularizer 参数传递会有什么不同呢?”

你是对的。频谱归一化是一个约束。

这是正则化器和约束之间的区别:

在每个训练步骤,权重将传递给正则化函数以计算正则化损失,该损失将被添加到损失中以获得用于训练的最终损失。

尽管

在每个训练步骤之后都会调用约束函数,并且层的权重将被约束权重替换。

两者之间存在巨大差异,所以我认为使用光谱归一化作为正则化不会像它作为约束那样起作用。您可能想要创建自定义正则化函数来产生您想要实现的结果。


推荐阅读