常州电工培训

常州电工证

常州变频器培训

常州触摸屏培训

江苏和讯自动化设备有限公司欢迎您!
  • 和讯PLC,电工培训中心优势,名师团队一对一教学.
热门课程
联系方式
  • 常州和讯自动化培训中心
  • 常州市新北区太湖东路府琛大厦2号楼307-1室,307-2室(常州万达广场对面)
  • 电话:0519-85602926
  • 手机:15861139266 13401342299
当前位置:网站首页 > 新闻中心 新闻中心
机器学习和计算机视觉的双层优化入门-常州上位机培训,常州机器视觉培训,常州工业机器人培训
日期:2023-5-17 10:25:56人气:  标签:常州上位机培训 常州机器视觉培训 常州工业机器人培训

机器学习和计算机视觉的双层优化入门

运行示例:加载数据


import boml

from boml import utils

from test_script.script_helper import *


dataset = boml.load_data.meta_omniglot(

    std_num_classes=args.classes,

    examples_train=args.examples_train,

    examples_test=args.examples_test,

)

# create instance of BOMLExperiment for ong single task

ex = boml.BOMLExperiment(dataset)

为meta-learner和base-learner建立网络结构和定义参数


boml_ho = boml.BOMLOptimizer(

    method="MetaInit", inner_method="Simple", outer_method="Simple"

)

meta_learner = boml_ho.meta_learner(_input=ex.x, dataset=dataset, meta_model="V1")

ex.model = boml_ho.base_learner(_input=ex.x, meta_learner=meta_learner)

定义LL(Lower-Level低层策略)的目标和计算流程


loss_inner = utils.cross_entropy(pred=ex.model.out, label=ex.y)

accuracy = utils.classification_acc(pred=ex.model.out, label=ex.y)

inner_grad = boml_ho.ll_problem(

    inner_objective=loss_inner,

    learning_rate=args.lr,

    T=args.T,

    experiment=ex,

    var_list=ex.model.var_list,

)

定义UL(Upper-Level高层策略)的目标和计算流程


loss_outer = utils.cross_entropy(pred=ex.model.re_forward(ex.x_).out, label=ex.y_) # loss function

boml_ho.ul_problem(

    outer_objective=loss_outer,

    meta_learning_rate=args.meta_lr,

    inner_grad=inner_grad,

    meta_param=tf.get_collection(boml.extension.GraphKeys.METAPARAMETERS),

)

汇总上述定义的所有操作


# Only need to be called once after all the tasks are ready

boml_ho.aggregate_all()

元训练的迭代(iteration)


#注意,元学习训练一般是先训练搜索网络架构(也就是训练架构参数),

#之后用搜索完成的网络重新训练模型参数,

#这里的训练是指第一步训练架构参数(也就是元参数或者称为与网络架构相关的超参数)

with tf.Session() as sess:

    tf.global_variables_initializer().run(session=sess)

    for itr in range(args.meta_train_iterations):

        # Generate the feed_dict for calling run() everytime

        train_batch = BatchQueueMock(

            dataset.train, 1, args.meta_batch_size, utils.get_rand_state(1)

        )

        tr_fd, v_fd = utils.feed_dict(train_batch.get_single_batch(), ex)

        # Meta training step

        boml_ho.run(tr_fd, v_fd)

        if itr % 100 == 0:

            print(sess.run(loss_inner, utils.merge_dicts(tr_fd, v_fd)))

包含的算法列表:

看原文吧:代码链接


2.3、汉语版:对BLO(Bi-Level Optimization)双层优化的快速教程,也是论文1的快速说明

介绍:

双层优化(BLO)起源于经济博弈论,后来被引入到优化中。双层优化能够处理具有两层结构的问题,两层结构对应两个子任务,其中一个子任务嵌套在另一个子任务中。标准的双层优化问题可以正式的写成如下形式:



双层优化问题

在机器学习和计算机视觉领域的科研方向(或者称为科研问题)中,如超参数优化、多任务和元学习、神经结构搜索、对抗性学习和深度强化学习等,虽然看起来区别很大,但是都可以用双层优化将他们统一成为一个科研方向,也就是说这些算法可以看作是双层优化算法,这正是论文Investigating Bi-Level Optimization for Learning and Vision from a Unified Perspective: A Survey and Beyond的核心思想。此外,此文还创建了一个基于最佳响应的单级重构(best-response-based single-level reformulation),并创建了一个统一的算法框架,以理解和制定主流的基于梯度的双层优化方法,涵盖从基本的自动微分方案到各种加速、简化、扩展及其收敛性和复杂性等。我们总结了主流的基于梯度的双层优化算法,并在论文代码中说明了这些算法之间的内在关系。此文还说明了统一的算法框架对创建新的双层优化算法可以起到极其巨大的作用,并指出了未来研究的一些有希望的方向。



对各种基于梯度的双层优化算法的内在关系的解释图

论文说明总结了我们的相关进展和现有作品的参考资料,以便于快速了解基于梯度的双层优化的发展情况。此外,论文说明还提供了本次调查中讨论的重要论文列表、相应的代码以及有关双层优化的其他资源。论文说明将继续维护该网站,以促进双层优化领域的研究。


本文网址:

相关信息:
版权所有 CopyRight 2006-2017 江苏和讯自动化设备有限公司 电话:0519-85602926 地址:常州市新北区太湖东路府琛大厦2号楼307-1室,307-2室
苏ICP备14016686号-2 技术支持:常州鹤翔网络
本站关键词:常州电工培训 常州电工证 常州变频器培训 常州触摸屏培训 网站地图 网站标签
在线与我们取得联系