如何在CNTK中应用自定义正则化(使用Python)?

你知道如何在CNTK中应用自定义的正则化函数吗?

特别是,我想在损失函数中加入模型函数对输入的导数,像这样

newLoss = loss + lambda * gradient_F(inputs)

其中F是模型学习到的函数,inputs是模型的输入。

我在CNTK中如何实现这个功能?我不知道如何访问输入的梯度,以及如何计算正则化器权重的梯度。


回答:

首先,梯度不是标量,因此优化它没有太大意义。梯度范数可能是一个有趣的添加到损失函数中的元素。要做到这一点,CNTK需要计算梯度范数的梯度,而在撰写本文时(2017年7月)还不支持这一功能。不过,这是一个我们希望在未来几个月内添加的重要功能。

更新:一个变通方法是做类似这样的事情noisy_inputs = x + C.random.normal_like(x, scale=0.01)noisy_model = model.clone('share', {x: noisy_inputs})auxiliary_loss = C.squared_error(model, noisy_model)但你需要根据你的问题调整噪声的尺度。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注