数据结构

模块:polygraphy.common

class TensorMetadata(dct=None)[source]

基类:Interface

一个 OrderedDict[str, MetadataTuple],将输入名称映射到它们的数据类型和形状。

形状可能包括负值,None 或字符串以指示动态维度。

示例

shape = tensor_meta["input0"].shape
dtype = tensor_meta["input0"].dtype
static from_feed_dict(feed_dict)[source]

使用来自提供的 feed_dict 的信息构造新的 TensorMetadata。

参数:

feed_dict (OrderedDict[str, Union[numpy.ndarray, torch.tensor]]) – 输入张量名称到相应输入数组的映射。

返回值:

TensorMetadata

add(name, dtype, shape, min_shape=None, max_shape=None, docstring=None)[source]

用于添加条目的便捷函数。

参数:
  • name (str) – 输入的名称。

  • dtype (Any) – 输入的数据类型。这可以是任何可以转换为 Polygraphy DataType 的类型。

  • shape (Sequence[Union[int, str]]]) – 输入的形状。动态维度可以用负值,None 或字符串表示。

  • min_shape (Sequence[int]) – 输入的最小有效形状。如果提供,则此形状不应包含任何动态维度。

  • max_shape (Sequence[int]) – 输入的最大有效形状。如果提供,则此形状不应包含任何动态维度。

  • docstring (str) – 与张量关联的任何附加信息。

返回值:

新添加的条目。

class FormattedArray(array, shape)[source]

基类:object

[实验性,未经测试] 此 API 是实验性的且未经测试,并且在未来的版本中可能会进行重大修改。使用时请注意!

表示语义形状与其在内存中的物理大小不同的数组。

例如,考虑形状为 (1, 3, 28, 28)NCHW 张量。如果我们使用像 N(C/4)HW4 这样的向量化格式,那么数组的物理大小将是 (1, 1, 28, 28 * 4),因为通道维度将被填充为 4 的倍数。但是,我们仍然需要一种方法来跟踪语义形状,例如用于形状推断。

此类提供了一种机制来独立于底层数组指定数组的形状。

参数:
  • array (Union[np.ndarray, polygraphy.cuda.DeviceView]) – 数组。在大多数情况下,这将是一个原始字节数组。

  • shape (Sequence[int]) – 数据的语义形状。

static from_json(src)

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

参数:

src (str) – 对象的 JSON 表示

返回值:

解码后的实例

返回类型:

FormattedArray

Raises:

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

static load(src)

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

参数:

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

返回值:

解码后的实例

返回类型:

FormattedArray

Raises:

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

save(dest)

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

参数:

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

to_json()

将此实例编码为 JSON 对象。

返回值:

此实例的 JSON 表示。

返回类型:

str