目录
1.保存模型为 onnx 格式
# 创建文件夹,将模型保存至此文件夹下
if not os.path.exists('./flowers/'):
os.mkdir('./flowers/')
# 加载ckpt模型,注意如果此行报错,可将cfg.directory,后的代码改为已存在的ckpt文件,例如'resnet-ai_2-150_113.ckpt'
param_dict = load_checkpoint(os.path.join(cfg.directory,cfg.prefix+'-'+str(cfg.epoch_size)+'_'+str(train_step_size)+'.ckpt'))
#设置训练网络,加载模型参数到训练网络内,这里以Resnet50为例
# 设置ResNet50网络
resnet=resnet50(class_num=cfg.num_class)
# 加载模型参数到ResNet50网络内
load_param_into_net(resnet, param_dict)
# 这里 x 用来指定导出模型的输入shape以及数据类型
x = np.random.uniform(-1.0, 1.0, size = [1, 3, cfg.HEIGHT, cfg.WIDTH]).astype(np.float32)
# 导出ONNX模型,设置网络,网络的输入,模型名称,保存格式
export(resnet, Tensor(x), file_name = './flowers/best_model.onnx', file_format = 'ONNX')
2.保存模型到 obs 桶里面
在下方链接处创建 OBS 桶,区域选择华北-北京四,自定义桶名称
https://console.huaweicloud.com/console/?region=cn-north-4#/obs/create
OBS 桶创建完成之后,在 ModelArts 的 Notebook 运行以下代码,将 onnx 模型保存至自己
创建的 OBS 桶内。可以通过如下链接查看模型是否保存成功:
https://console.huaweicloud.com/console/?region=cn-north-4#/obs/manager/buckets
# 在华为云OBS创建自己的桶,将ONNX模型保存到自己的桶内
import moxing
# 同步ONNX模型至自己的桶内,设置拷出目录,以及拷入目录(其中ascblk需要修改成自己的桶名称)
moxing.file.copy_parallel(src_url='./flowers/best_model.onnx', dst_url='obs://ascblk/flower/onnx/best_model.onnx')
配置文件 insert_op_conf.cfg 和 customize_service.py 的下载链接:
https://zhuanyejianshe.obs.cn-north-4.myhuaweicloud.com/chuangxinshijianke/cv-nlp/flower_recognition.zip
将 insert_op_conf.cfg 文件上传到 obs 桶内 onnx 模型目录下
3.将 onnx 格式的模型转换为 om 格式
进入 ModelArts 控制台,点击 AI 应用管理>模型转换>创建任务
- 输入框架选择 TensorFlow;
- 转换输入目录是 OBS 桶内 onnx 的文件目录;
- 出框架选择 MindSpore;
- 转换输出目录为 OBS 桶内空白目录,如新建 om 文件夹,用于存放转换好的 om模型;
- 转换模板选择 Onnx-To-Ascend-TBE;
- 输入数据格式选择 NCHW
点击立即创建,等待几分钟,运行成功,可查看 obs 输出目录下是否有生成的.om 文件