我正在使用C#CNTK 2.2.0 API进行培训。 我已经安装了Nuget包CNTK.CPUOnly和CNTK.GPU。
我正在寻找C#中的学习者。 1. AdaDelta 亚当 3. AdaGrad 4. Neterov
看起来Python支持这些学习者,但C# 包没有显示它们。
我只能在C#中看到SGD和SGDMomentun学习者。
任何想法,如何在C#中获取和设置其他学习者。 我是否需要安装任何其他软件包才能吸引这些学员?
感谢您的帮助。
答案 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)
感谢大家的回答。