你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EvalDLL C# API
有一个托管接口可用于评估模型,无需数据读取器或数据文件 () 。 此接口是在库内的 CLI 托管代码中实现的 EvalWrapper
。 此库又使用 Evaldll
库在本机 C++) 中执行实际的网络评估 (。
C#) 中的托管接口名称 (如下:
public interface IEvaluateModelManaged<T> : IDisposable
元素类型在哪里 T
(float
或 double
)
此接口提供以下方法:
void Init(string config)
此方法使用指定的配置文件初始化评估引擎。 配置文件中的条目将分析并分配给评估引擎,但是,不会在此调用中创建网络。 此外,此方法将默认 numCPUThreads
为此属性 1
,除非配置文件包含此属性的其他值。
void CreateNetwork(string networkDescription)
此方法从配置文件中的网络说明生成网络,或者如果 modelPath
指定了该属性,它将从磁盘加载模型。
networkDescription
:包含网络的说明,无论是通过 modelPath 属性的 NetworkBuilder 条目。
void CreateNetwork(string networkDescription, List<string> outputNodeNames)
此方法从配置文件中的网络说明生成网络,或者如果 modelPath
指定了该属性,它将从磁盘加载模型。 此外,它还将配置文件中的输出节点列表替换为作为参数传入的列表。 这使调用方能够检索其他节点的输出值,例如隐藏层中的节点 () 。
networkDescription
:包含网络的说明,无论是通过 modelPath 属性的 NetworkBuilder 条目。outputNodeNames
:要标记为“输出”的节点列表,以便评估它们。
void CreateNetwork(string networkDescription, int deviceId)
此方法从配置文件中的网络说明生成网络。 它只是一种在文本前面附加deviceId=<deviceId>
networkDescription
的便利方法。
networkDescription
:包含通过NetworkBuilder
属性或modelPath
属性的网络说明。deviceId
:指定要附加到网络说明deviceId
属性的设备 ID 值。
void CreateNetwork(string networkDescription, int deviceId, List<string> outputNodeNames)
此方法从配置文件中的网络说明生成网络。 它只是一种在文本前面附加deviceId=<deviceId>
networkDescription
的便利方法。
networkDescription
:包含网络的说明,无论是通过 modelPath 属性的 NetworkBuilder 条目。deviceId
:指定要附加到网络说明deviceId
属性的设备 ID 值。outputNodeNames
:要标记为“输出”的节点列表,以便评估它们。
List<T> Evaluate(string outputKey, int outputSize)
此方法使用单个正向传递评估网络, (没有输入) 并返回与指定层 outputKey
关联的值。
outputKey
:要从中返回值的层名称。outputSize
:输出层中的值数。
不推荐使用此方法。 请改用该方法List<T> Evaluate(string outputKey)
。
List<T> Evaluate(string outputKey)
此方法使用单个正向传递评估网络, (没有输入) 并返回与指定层 outputKey
关联的值。
outputKey
:要从中返回值的层名称。 在方法内部,确定输出所需的数据缓冲区大小,并分配所需的缓冲区。
void Evaluate(Dictionary<string, List<T>> inputs, Dictionary<string, List<T>> outputs)
此方法使用提供的输入评估网络,并检索多个输出层。
inputs
:字典将输入层名称映射到用作网络输入的值。outputs
:字典将输出层名称映射到要从网络检索的值。
List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey, int outputSize)
此方法使用提供的输入评估网络并检索单个输出层
inputs
:字典将输入层名称映射到用作网络输入的值。outputKey
:所需输出层的名称。outputSize
:输出层中的值数。
不推荐使用此方法。 请改用该方法List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)
。
List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)
此方法使用提供的输入评估网络并检索单个输出层
inputs
:字典将输入层名称映射到用作网络输入的值。outputKey
:所需输出层的名称。
在方法内部,确定输出所需的数据缓冲区大小,并分配所需的缓冲区。
List<T> EvaluateRgbImage(Bitmap image, string outputKey)
此方法评估位图图像并检索单个输出层
image
:RGB 格式的位图图像输入。 它必须已重新调整大小,以匹配网络所需的大小。outputKey
:所需输出层的名称。
在内部,该方法首先提取包含 3 个通道的特征向量,然后将其作为输入馈送给网络。 它还为输出分配必要的缓冲区。
Dictionary<string, int> GetNodeDimensions(NodeGroup nodeGroup)
此方法返回项字典,每个项将层名称映射到维度大小 (键) 。 节点组通过 NodeGroup
枚举定义:
public enum class NodeGroup
{
nodeInput, // an input node
nodeOutput, // an output node
nodeSpecified
};
此接口有两个实现可供托管客户端使用:
class IEvaluateModelManagedF : IEvaluateModelManaged<float> // Assumes data elements of type float
and
class IEvaluateModelManagedD : IEvaluateModelManaged<double> // Assumes data elements of type double
示例
此处的 CSEvalClient 程序演示了此评估接口的使用。