用户在模型编译时可以指定模型输入数据的shape range,从而编译出支持动态输入的模型。
Atlas 训练系列产品
Atlas 推理系列产品(Ascend 310P处理器)
Atlas A2训练系列产品
下面介绍如何在模型构建时设置动态输入的shape range:
1 2 3 4 5 |
auto shape_data = vector<int64_t>({ -1,3,5,-1 }); TensorDesc desc_data(ge::Shape(shape_data), FORMAT_ND, DT_FLOAT); auto data = op::Data("data"); data.update_input_desc_data(desc_data); data.update_output_desc_out(desc_data); |
1 2 3 4 5 6 |
void PrepareOptions(std::map<AscendString, AscendString>& options) { options.insert({ {ge::ir_option::INPUT_FORMAT, "NCHW"}, {ge::ir_option::INPUT_SHAPE, "8~20,3,5,-1"} }); } |
INPUT_SHAPE参数设置shape范围时的格式要求:
如果模型编译时通过该参数设置了动态输入的shape range,则进行模型推理时,需要在模型执行aclmdlExecute接口之前调用aclmdlSetDatasetTensorDesc接口,用于设置该输入的tensor描述信息(主要是设置Shape信息);模型执行之后,调用aclmdlGetDatasetTensorDesc接口获取模型动态输出的Tensor描述信息(主要是获取输出内存的大小、输出内存地址等)。接口的具体使用方法,请参见《应用软件开发指南(C&C++)》。