【问题标题】:Learners in CNTK C# APICNTK C# API 中的学习者
【发布时间】:2017-11-16 08:07:59
【问题描述】:

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

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

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

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

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

感谢您的帮助。

【问题讨论】:

    标签: c# python cntk


    【解决方案1】:

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

    【讨论】:

    • 太好了,谢谢。这有帮助。是的,我也可以在 CPUOnly 库中看到它们。 Python 提供 Nesterov 学习器。这是 C# 中缺少的吗?
    • 这些是目前通过C#提供的所有学习者。也许更新版本会提供更多功能。
    【解决方案2】:

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

    【讨论】:

    • 谢谢。 NCCL 仅提供 GPU 加速。
    【解决方案3】:

    检查 CNTKLib 是否在 CPUOnly 包中提供了这些学习者。 Nestrov 在那里缺失,但存在于 python 中。

    在创建 trainer 对象时有所不同 使用 CNTKLib 学习器函数与 Learner 类。

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

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

    ParameterVector pv = new ParameterVector()

    pv.Add(weightParameter)

    pv.Add(biasParameter)

    感谢大家的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多