如何在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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