CNTK C ++ API中Function :: Forward和Trainer :: TrainMinibatch之间的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CNTK C ++ API中Function :: Forward和Trainer :: TrainMinibatch之间的区别相关的知识,希望对你有一定的参考价值。

我试图从CNTKLibrary.h逆向工程CNTK的C ++ API(因为没有官方文档)

我做了一个RNN网络(主要通过遵循单元测试源代码),它似乎工作(至少现在没有编译或运行时错误!!!)

在单元测试源代码中,我看到他们使用Function :: Forward和Function :: Backward来计算“trainingLoss”和“predection”,但是通过以下Python示例,我发现我可以使用相关学习器优化器(FSAdaFradLearner)制作“Trainer” ,然后在该poinetr上调用“TrainMinibatch”。

现在我的问题是,哪一个是训练模型的正确方法?

答案

有不同的抽象级别来实现同样的事情。

Trainer是一个包装/便利类,可以为你记住一些东西,比如根节点和学习者,并提供方便函数TrainMinibatch(),它实际上是Forward()Backward()learner.Update()的序列。

C ++ API与Python API非常相似。实际上,大多数Python API函数和类只是围绕相应C ++函数和类的包装器。因此,由于语言和类型 - 系统差异,方法签名不匹配100%,因此Python文档中描述的任何逻辑都应直接应用于C ++。

在典型的用例中,调用TrainMinibatch()将会在这里结束:[https://github.com/Microsoft/CNTK/blob/94e6582d2f63ce3bb048b9da01679abeacda877f/Source/CNTKv2LibraryDll/Trainer.cpp#L193

它叫ExecuteForwardBackward(),它叫Forward()Backward()。您可以将其用作如何调用这些函数的示例。

以上是关于CNTK C ++ API中Function :: Forward和Trainer :: TrainMinibatch之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Cntk个人数据集

Jupyter 笔记本内核上的 CNTK 无法正常工作

在 Python 中在 CNTK 中设置 learningRateMultiplier

用于图像分类的 CNTK 评估

助力微软语音识别错误率再降至5.1%,秘密武器CNTK与TensorFlow性能孰强?

markdown CNTK