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之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中在 CNTK 中设置 learningRateMultiplier