use*_*665 5 machine-learning neural-network keras
我的生成神经网络的最后一层有一个 l1 activity_regularizer=l1 :
outputs = Dense(200, activation='softmax', activity_regularizer=l1(1e-5))(x)
Run Code Online (Sandbox Code Playgroud)
它使我的结果更好,但我不明白为什么它会改变 softmax 激活的任何内容。输出的总和 = 1 ,所有正值总是如此,所以正则化器无论如何都应该给出完全相同的损失。
我activity_regularizer=l1(1e-5)在训练中做什么?
由于 Softmax,L1 正则化对总成本的贡献实际上是恒定的。
然而,正则化项的梯度是非零的,并且等于非零激活的数量(abs的梯度是sign ,所以我们有由于softmax而成为正的激活的sign s之和)。
您可以尝试使用或不使用 L1 项来运行,并检查最终有多少个非零元素。
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |