CNTK C# 学习者 API

Learners in CNTK C# API

我正在使用 C# CNTK 2.2.0 API 进行训练。 我已经安装了 Nuget 包 CNTK.CPUOnly 和 CNTK.GPU.

我正在寻找以下 C# 学习者。 1.AdaDelta 2.亚当 3.AdaGrad 4. 涅捷罗夫

看起来 Python 支持这些学习者,但 C# 包裹没有显示它们。

我在那里只能看到 C# 中的 SGD 和 SGDMomentun 学习器。

任何想法,如何在 C# 中获取和设置其他学习者。 我需要安装任何额外的软件包才能获得这些学习者吗?

感谢您的帮助。

下载 NCCL 2 应用程序以在 c# www.nvidia 中进行配置。 com 或 google NCCL 下载

CNTK 命名空间中的 CNTKLib class 提供了多个学习器,甚至不是您列出的所有学习器。我在下面列出了它们,没有重载。

public static Learner SGDLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule);
public static Learner MomentumSGDLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule, TrainingParameterScheduleDouble momentumSchedule);
public static Learner FSAdaGradLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule, TrainingParameterScheduleDouble momentumSchedule);
public static Learner AdamLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule, TrainingParameterScheduleDouble momentumSchedule);
public static Learner AdaGradLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule);
public static Learner RMSPropLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule, double gamma, double inc, double dec, double max, double min);
public static Learner AdaDeltaLearner(ParameterVector parameters, TrainingParameterScheduleDouble learningRateSchedule);

您可以像下面这样轻松访问它们:

using CNTK;
CNTKLib.AdaDeltaLearner([...])

这是使用 CNTK 2.2 的 GPU 版本完成的。可能与 CPU 版本不同。

检查 CNTKLib 是否在 CPUOnly 包中提供这些学习者。 Nestrov 在那里失踪,但出现在 python.

创建训练器对象时存在差异 使用 CNTKLib 学习器函数与学习器 class.

如果使用学习器 class, net 参数作为 IList 提供。 这可以使用 netout.parameter() ;

获得

如果使用 CNTKLib, 参数作为 ParameterVector 提供。 在构建网络时构建 ParameterVector。 并在创建 Trainer 对象时提供它。

ParameterVector pv = new ParameterVector()

pv.Add(权重参数)

pv.Add(偏差参数)

感谢大家的回答。