你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EvalDLL C++ API
有一个本机接口可用于评估模型,无需数据读取器或数据文件 () 。 此接口分别在 Windows 和 libCntk.Eval
Linux 中的 DLL 中的 C++ Cntk.Eval
中实现。 该 Cntk.Eval
DLL 又由EvalWrapper
程序集 (使用,该程序集在Windows中提供托管层) 。
本机接口名称如下:
template <typename ElemType> class IEvaluateModel
其中 ElemType
元素类型 (float
或 double
) 。
此接口提供以下方法:
void Init(const std::string& config)
此方法使用指定的配置文件初始化评估引擎。 配置文件中的条目将分析并分配给评估引擎,但是,不会在此调用中创建网络。 此外,此方法将默认 numCPUThreads
为此属性 1
,除非配置文件包含此属性的其他值。
void CreateNetwork(const std::string& networkDescription)
此方法从配置文件中的网络说明生成网络,或者如果 modelPath
指定了该属性,它将从磁盘加载模型。
networkDescription
:包含网络的说明,无论是通过 modelPath 属性的 NetworkBuilder 条目。
void GetNodeDimensions(std::map<std::wstring, size_t>& dimensions, NodeGroup nodeGroup)
此方法填充维度字典,每个维度项将层名称映射到维度大小 (键) 。 节点组通过 NodeGroup
枚举定义:
enum NodeGroup
{
nodeInput, // an input node
nodeOutput, // an output node
nodeSpecified
};
void StartEvaluateMinibatchLoop(const std::wstring& outputNodeName)
此方法为评估调用准备网络。
outputNodeName
:将计算的节点的名称
void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& inputs, std::map<std::wstring, std::vector<ElemType>*>& outputs)
此方法使用提供的输入评估网络,并检索多个输出层。
inputs
:字典将输入层名称映射到用作网络输入的值。outputs
:字典将输出层名称映射到要从网络检索的值。
void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& outputs)`
此方法评估检索多个输出层的网络。 评估是一个单向传递,用于评估输出节点。
outputs
:字典将输出层名称映射到要从网络检索的值。
void Destroy()
释放在创建网络期间分配的资源。
此接口有两个实现可供客户端使用:
IEvaluateModelF : IEvaluateModel<float> // Assumes data elements of type float
and
IEvaluateModelD : IEvaluateModel<double> // Assumes data elements of type double
示例
位于文件夹 Examples/Evaluation/LegacyEvalDll/CPPEvalClient 中的 CPPEvalClient 程序演示了此评估接口的用法。