【问题标题】:CNTK C# API - How to set learner module and number of iteration in learner module for trainingCNTK C# API - 如何在学习器模块中设置学习器模块和迭代次数以进行训练
【发布时间】:2023-03-11 20:30:01
【问题描述】:

我正在使用 CNTK C# API(最新 2.2 版本)并且有以下问题。 (使用来自 GitHub 的logisticRegression 示例并将其修改为 为我的用例设置它。

使用 SGD 并尝试使用 SGDMomentim 学习器。

1. 如何设置每个样本的最大迭代次数以进行训练。 我可以在 SGDMomentum 中看到 LR 和 MR 变量,但没有看到迭代。

2. 有没有一种方法可以监控每个神经元在网络中每次迭代的每个样本的训练过程中如何进行/卡住。或者如何 每次迭代中权重参数都在变化?

3. 其他学习模块预计何时以 C# 发布? (除了 SGD 和 SGD 动量)?

感谢您的帮助。

【问题讨论】:

    标签: c# cntk


    【解决方案1】:
    1. 使用 TrainingParameterScheduleDouble(VectorPairSizeTDouble schedule, uint epochSize) 来指定每个 epoch 的倍数的速率。 (是的,API 应该对 C# 更友好。)使用输入向量为每个 Epoch 数指定一个速率。例如: {{1, 0.05}, {2, 0.1}, {1, 0.005}} 和 epochSize = 100。

    意思是:前100个样本使用'0.05',后200个样本使用'0.1',之后切换为'0.005'

    1. 监控参数更新:see answer to this
    2. 大多数学习器在 2.2 中发布。您是否有 C# API 无法提供的特定学习者?

    【讨论】:

    • 谢谢。我能够创建向量对...根本不直观:-)
    • PairSizeTDouble p1 = new PairSizeTDouble(1, 0.001); PairSizeTDouble p2 = new PairSizeTDouble(2, 0.1); PairSizeTDouble p3 = new PairSizeTDouble(1, 0.005); CNTK.VectorPairSizeTDouble vp = new VectorPairSizeTDouble() { p1 };//, p2, p3 } ; CNTK.TrainingParameterScheduleDouble epochSchedule = new CNTK.TrainingParameterScheduleDouble(vp, 100);
    • 我在 AZure ML studio 中有一个等效模型。它工作得很好。该模型使用“迭代次数”作为参数以及其他参数。 .我在 CNTK 中设置了与 AZure ML 相同的模型,但这在 CNTK 中不起作用。随着 CNTK 中训练的进行,权重根本不会被修改。
    • 每次乘法的速率是什么意思。率是多少?你能帮我更好地理解它吗?
    • 关于每个时期的倍数(在我的答案中纠正错字)的速率:例如 {2, 0.1} 表示接下来的 2 * 100(100 是时期大小)样本,学习率将是0.1.
    猜你喜欢
    • 2023-03-25
    • 2021-05-05
    • 1970-01-01
    • 2017-10-12
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    相关资源
    最近更新 更多