---
title: 配置动态shape
description: "配置动态shape可以给予图编译阶段更多shape range信息，编译器用以编译高效的算子和更好地管理内存。设置maxOutputSize用于配置更精准的输出最大值，图执行器会根据此配置在图计算前预先申请好输出内存，提升性能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfdevp_23_0027.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfdevp_23_0027.html
indexId: 32cdc5c91c1fa3e3687f885b8edc910eb0ce2dbebaaa7e063d0c7aee415075f569
---
# 配置动态shape

#### 功能介绍

配置动态shape可以给予图编译阶段更多shape range信息，编译器用以编译高效的算子和更好地管理内存。设置maxOutputSize用于配置更精准的输出最大值，图执行器会根据此配置在图计算前预先申请好输出内存，提升性能。


#### 使用约束

无


#### 使用方法

假如有一个动态shape的resize沉图，具体实现如下，该沉图有两个输入，一个是需要resize的图片数据，一个是resize目标大小信息：

```
def resize_bilinear(x: torch.Tensor, hw: torch.Tensor):
      return F.interpolate(x, size=[hw[0], hw[1]], mode="bilinear", align_corners=True)
```

对于该动态沉图，具体配置如下所示。

- ge.inputShape：动态输入的shape范围。

  - 支持按照name设置："input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2"，例如："input_name1:8~20,3,5,-1;input_name2:5,3~9,10,-1"。指定的节点需要放在双引号中，节点中间使用英文分号分隔。input_name必须是转换前的网络模型中的节点名称。如果用户知道data节点的name，推荐按照name设置。

  - 支持按照index设置："n1,c1,h1,w1;n2,c2,h2,w2"，例如："8~20,3,5,-1;5,3~9,10,-1"。可以不指定节点名，节点按照索引顺序排列，节点中间使用英文分号分隔。按照index设置shape范围时，data节点需要设置属性index，说明是第几个输入，index从0开始。

  - 动态维度有shape范围的用波浪号“~”表示，固定维度用固定数字表示，不限定范围的用-1表示。
- ge.outputMaxSize（可选）：指定图输出的最大内存。

  - 设置该参数时，dataflow框架会利用该参数预先为沉图输出分配好内存，可减少一次数据拷贝，提升执行性能。
    假如最大输出shape是[1,3,2567,3440]，dtype是float32（fp32存储需4个字节），那么outputMaxSize计算为1x3x2567x3440x4=105965760。

    如果设置不正确，outputMaxSize小于实际输出时会有报错。

  - 不设置该参数时，在模型执行完成时根据实际情况申请输出内存。
- inputs_tensor_desc

  - data_type：tensor的数据类型。
  - shape：tensor的shape信息，动态的维度请设置成-1。
  - format：每个输入的format信息需要根据实际的情况设置，支持NCHW, NHWC, ND三种格式。

```
{
    "build_options": {
        "ge.inputShape": "1,3,1~1728,1~1728;2",
        "ge.outputMaxSize": "107495424"
    },
    "inputs_tensor_desc": [
      {
        "data_type": "DT_FLOAT",
        "shape": [1, 3, -1, -1],
        "format": "NCHW"
      },
      {
        "data_type": "DT_INT32",
        "shape": [2],
        "format": "ND"
      }
    ]
}
```
