CNTK C#API的学习者

时间:2017-11-16 08:07:59

标签: c# python cntk

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

我正在寻找C#中的学习者。 1. AdaDelta 亚当 3. AdaGrad 4. Neterov

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

我只能在C#中看到SGD和SGDMomentun学习者。

任何想法,如何在C#中获取和设置其他学习者。 我是否需要安装任何其他软件包才能吸引这些学员?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

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

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版本不同。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

创建训练对象时存在差异 与CNTKLib学习者功能vs​​ Learner课程。

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

获得

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

ParameterVector pv = new ParameterVector()

pv.Add(weightParameter)

pv.Add(biasParameter)

感谢大家的回答。