数据结构

模块:polygraphy.comparator

class IterationResult(outputs=None, runtime=None, runner_name=None)[source]

基类:Interface

一个有序字典,包含运行 runner 单次迭代的结果。

此字典将输出名称映射到数组,并保留来自 runner 的输出顺序。

注意:可以设置 POLYGRAPHY_ARRAY_SWAP_THRESHOLD_MB 环境变量以启用将数组交换到磁盘。

还包括其他字段,指示生成输出的 runner 的名称,以及执行此操作所需的时间。

参数:
  • outputs (Dict[str, Union[np.array, torch.Tensor]]) – 此迭代的输出,映射到其名称。

  • runtime (float) – 此迭代所需的时间,以秒为单位。仅用于日志记录目的。

  • runner_name (str) – 生成此输出的 runner 的名称。如果省略,则会生成默认名称。

class RunResults(lst=None)[source]

基类:Interface

将 runner 映射到每次迭代的输出(以 List[IterationResult] 的形式)。

例如,如果 resultsRunResults() 的实例,那么要访问来自指定 runner 的第一次迭代的输出,请执行

iteration = 0
runner_name = "trt-runner"
outputs = results[runner_name][iteration]

# `outputs` is a `Dict[str, np.ndarray]`

注意:从技术上讲,这是一个 List[Tuple[str, List[IterationResult]]],但包含使其行为类似于可以包含重复项的 OrderedDict 的助手。

items()[source]

创建一个生成器,该生成器产生 Tuple[str, List[IterationResult]] - runner 名称和相应的输出。

keys()[source]

创建一个生成器,该生成器产生 runner 名称 (str)。

values()[source]

创建一个生成器,该生成器产生 runner 输出 (List[IterationResult])。

update(other)[source]

更新存储在此实例中的结果。

参数:

other (Union[Dict[str, List[IterationResult]], RunResults]) – 用于更新此实例的字典或 RunResults 实例。

add(out_list, runtime=None, runner_name=None)[source]

一个助手,用于创建 List[IterationResult] 并将其映射到指定的 runner_name。

此方法不能用于修改现有条目。

调用此方法等效于

results[runner_name] = []
for out in out_list:
    results[runner_name].append(IterationResult(out, runtime, runner_name))
参数:
  • out_list (List[Dict[str, np.array]]) – 一个或多个输出集,其中每个输出都是输出名称映射到 NumPy 数组的字典。

  • runtime (float) – 此迭代所需的时间,以秒为单位。仅用于日志记录目的。

  • runner_name (str) – 生成此输出的 runner 的名称。如果省略,则会生成默认名称。

static from_json(src)

解码 JSON 对象并创建此类的实例。

参数:

src (str) – 对象的 JSON 表示形式

返回:

解码后的实例

返回类型:

RunResults

引发:

PolygraphyException – 如果 JSON 无法解码为 RunResults 的实例

static load(src)

从 JSON 文件加载此类的实例。

参数:

src (Union[str, file-like]) – 要从中读取的路径或类似文件的对象。

返回:

解码后的实例

返回类型:

RunResults

引发:

PolygraphyException – 如果 JSON 无法解码为 RunResults 的实例

save(dest)

将此实例编码为 JSON 对象并将其保存到指定的路径或类似文件的对象。

参数:

dest (Union[str, file-like]) – 要写入的路径或类似文件的对象。

to_json()

将此实例编码为 JSON 对象。

返回:

此实例的 JSON 表示形式。

返回类型:

str

class AccuracyResult(dct=None)[source]

基类:Interface

一个有序字典,包括有关 Comparator.compare_accuracy 结果的详细信息。

更具体地说,它是一个 OrderedDict[Tuple[str, str], List[OrderedDict[str, bool]]],它将 runner 对(包含两个 runner 名称的元组)映射到布尔字典列表(或可以转换为布尔值的任何内容,例如 OutputCompareResult),指示相应迭代的输出中是否存在匹配项。List[OrderedDict[str, bool]] 是从 compare_accuracy 中的 compare_func 返回的字典构建的。

例如,要查看 runner0runner1 在名为 output0 的输出的第一次迭代期间是否存在匹配项

runner_pair = ("runner0", "runner1")
iteration = 0
output_name = "output0"
match = bool(accuracy_result[runner_pair][iteration][output_name])

如果存在不匹配项,您可以从 Comparator.run() 的结果中检查输出,此处假定为 run_results

runner0_output = run_results["runner0"][iteration][output_name]
runner1_output = run_results["runner1"][iteration][output_name]
__bool__()[source]

所有输出是否在每次迭代中都匹配。您可以使用此函数来避免手动检查每个输出。例如

if accuracy_result:
    print("All matched!")
返回:

bool

percentage(runner_pair=None)[source]

返回给定的 runner 对匹配的迭代百分比,表示为 0.0 到 1.0 之间的十进制数。

当迭代次数为 0 或没有 runner 比较时,始终返回 1.0。

参数:

runner_pair (Tuple[str, str]) – 描述要检查哪些 runner 的 runner 对。默认为字典中的第一对。

stats(runner_pair=None)[source]

返回匹配、不匹配的迭代次数以及迭代总数。

参数:

runner_pair (Tuple[str, str]) – 描述要检查哪些 runner 的 runner 对。默认为字典中的第一对。

返回:

分别表示匹配、不匹配和总数的迭代次数。

返回类型:

Tuple[int, int, int]