文档首页 > > AI工程师用户指南> 训练管理> 自动化搜索作业> 示例:0行代码修改,使用backbone替换在Ascend 910上优化预置算法

示例:0行代码修改,使用backbone替换在Ascend 910上优化预置算法

分享
更新时间:2020/07/06 GMT+08:00

ModelArts在Ascend 910上,搜索出了一些比原版resnet50更好的结构。本示例介绍如何在不修改代码的情况下,使用这些搜索好的结构,去优化预置算法的resnet50。

样例代码

如下所示样例代码,使用预置算法在ResNet50网络来训练flower数据集。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import argparse
import os
import json
import sys
import moxing as mox
from moxing.tensorflow.builtin_algorithms.algorithm_common import AlgorithmLego
app_url = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, os.path.dirname(__file__))
from algo_util import data_util

parser = argparse.ArgumentParser(description='')
parser.add_argument('--task_type', type=str, default=None, help='')
parser.add_argument('--train_url', type=str, default=None, help='')

def main():
  args, _ = parser.parse_known_args()
  print ("args", args)
  flag_dict = data_util.do_preprocess()

  alego = AlgorithmLego()
  alego.add(args.task_type, flag_dict=flag_dict)
  alego.start()

  mox.file.shift("os", "mox")
  with open("{}/metric.json".format(args.train_url)) as f:
    metric = json.load(f)
    accuracy = metric["total_metric"]["total_metric_values"]["accuracy"]
    print("accuracy:%d." % accuracy)

if __name__ == "__main__":
  main()

配置文件编写

参考代码编写规范reporter的0行代码修改方法,以及示例:使用更优秀的网络结构替换原生ResNet50,yaml配置文件编写如下所示。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
general:
  cpu_per_instance: 1
  gpu_per_instance: 0
  npu_per_instance: 1

search_space:
  builtin: ResNet50

search_algorithm:
  type: grid_search
  reward_attr: accuracy
  report_keys:
    - name: accuracy
      regex: (?<=accuracy:).+(?=.)
scheduler:
  type: FIFOScheduler

启动搜索作业

此样例需要按照预置算法的输入要求准备数据集,然后参照示例:使用更优秀的网络结构替换原生ResNet50上传、配置数据集后,上传python脚本和yaml配置文件,根据创建自动化搜索作业章节,选择Ascend芯片搜索引擎,启动Ascend芯片上搜索作业。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问