云服务器内容精选

  • 动态batch 在模型转换阶段通过--configFile参数指定配置文件,并且在配置文件中配置input_shape及dynamic_dims动态参数。其中input_shape的-1表示动态shape所在的维度,dynamic_dims指定动态维度的取值范围,比如“[1~4],[8],[16]”表示该动态维度支持1、2、3、4、8、6共六种大小。 # config.ini [ascend_context] input_shape=input.1:[-1,3,224,224] dynamic_dims=[1~4],[8],[16] 在执行convert_lite命令时,指定--configFile=config.ini即可自动编译指定的动态shape。 #shell converter_lite --modelFile=resnet50.onnx --fmk=ONNX --device=Ascend --outputFile=resnet50_dynamic --saveType=MINDIR --configFile=config.ini 注意:推理应用开发时,需要使用模型的Resize功能,改变输入的shape。而且Resize操作需要在数据从host端复制到device端之前执行,下面是一个简单的示例,展示如何在推理应用时使用动态Shape。 import mindspore_lite as mslite import numpy as np from PIL import Image # 设置目标设备上下文为Ascend,指定device_id为0 context = mslite.Context() context.target = ["ascend"] context.ascend.device_id = 0 # 构建模型 model = mslite.Model() model.build_from_file("./resnet50_dynamic.mindir", mslite.ModelType.MINDIR, context) data = np.random.rand(8, 3, 224, 224).astype(np.float32) inputs = model.get_inputs() model.resize(inputs, [list(data.shape)]) inputs[0].set_data_from_numpy(data) # 前向推理,并将结果从device侧传到host侧 outputs = model.predict(inputs)[0].get_data_to_numpy() print(outputs.shape) # (8, 1000)