运行器

模块:polygraphy.backend.tf

class TfRunner(sess, timeline_dir=None, name=None)[源代码]

基类: BaseRunner

使用 TensorFlow 会话运行推理。

参数:
  • sess (Union[Tuple[tf.Session, Sequence[str]], Callable() -> Tuple[tf.Session, Sequence[str]]]) – 包含 TensorFlow 会话和输出名称的元组,或返回它们的 callable 对象。

  • timeline_dir (str) – 写入 TensorFlow 时间线的路径。 请注意,性能分析可能会影响执行时间。

  • name (str) – 用于此运行器的用户可读名称前缀。 运行器计数和时间戳将附加到此前缀。

__enter__()

激活运行器以进行推理。 例如,这可能涉及分配 CPU 或 GPU 内存。

__exit__(exc_type, exc_value, traceback)

停用运行器。 例如,这可能涉及释放 CPU 或 GPU 内存。

activate()

激活运行器以进行推理。 例如,这可能涉及分配 CPU 或 GPU 内存。

通常,您应该使用上下文管理器而不是手动激活和停用。 例如

with RunnerType(...) as runner:
    runner.infer(...)
deactivate()

停用运行器。 例如,这可能涉及释放 CPU 或 GPU 内存。

通常,您应该使用上下文管理器而不是手动激活和停用。 例如

with RunnerType(...) as runner:
    runner.infer(...)
get_input_metadata(use_numpy_dtypes=None)

返回有关模型输入的信息。 此处的形状可能包括动态维度,以 None 表示。 必须仅在 activate() 之后和 deactivate() 之前调用。

参数:

use_numpy_dtypes (bool) – [已弃用] 是否返回 NumPy 数据类型而不是 Polygraphy DataType。 提供此参数是为了保持向后兼容性。 将来,此参数将被删除,并且将始终返回 Polygraphy DataType。 这些可以通过调用 numpy() 方法转换为 NumPy 数据类型。 默认为 True。

返回:

输入名称、形状和数据类型。

返回类型:

TensorMetadata

infer(feed_dict, check_inputs=True, *args, **kwargs)

使用提供的 feed_dict 运行推理。

必须仅在 activate() 之后和 deactivate() 之前调用。

注意:有些运行器可能在 infer() 中接受其他参数。 有关这些参数的详细信息,请参阅其 infer_impl() 方法的文档。

参数:
  • feed_dict (OrderedDict[str, numpy.ndarray]) – 输入张量名称到相应输入 NumPy 数组的映射。

  • check_inputs (bool) – 是否检查提供的 feed_dict 是否包含具有预期数据类型和形状的预期输入。 禁用此功能可能会提高性能。 默认为 True。

inference_time

运行推理所需的时间,以秒为单位。

类型:

float

返回:

输出张量名称到其对应 NumPy 数组的映射。

重要提示:运行器可能会重复使用这些输出缓冲区。 因此,如果您需要保存来自多次推理的输出,则应使用 copy.deepcopy(outputs) 复制一份。

返回类型:

OrderedDict[str, numpy.ndarray]

last_inference_time()

返回上次调用 infer() 期间所需的总推理时间,以秒为单位。

必须仅在 activate() 之后和 deactivate() 之前调用。

返回:

以秒为单位的时间,如果运行器未测量运行时,则为 None。

返回类型:

float

is_active

此运行器是否已激活,无论是通过上下文管理器,还是通过调用 activate()

类型:

bool