你当前正在访问 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 元素类型 (floatdouble) 。

此接口提供以下方法:


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 程序演示了此评估接口的用法。