一种基于图形可视化的智能代码拼接方法与流程

文档序号:27558740发布日期:2021-11-25 03:08阅读:185来源:国知局
一种基于图形可视化的智能代码拼接方法与流程

1.本发明属于智能集成开发环境技术领域,具体涉及一种基于图形可视化的智能代码拼接方法。


背景技术:

2.人工智能的思想萌芽起源可追溯至十七世纪的巴斯卡和莱布尼茨,近些年来技术及相关应用均得到了快速发展。截止目前为止,现有人工智能体系技术大致可划分为三大核心技术、近三十种常用算法以及十余种常用模型等。采用人工智能技术解决实际技术问题时,需要考虑的问题一是技术问题的类型,二是解决问题的目标(如成本、时间等),针对相同的技术问题一般会存在多种人工智能算法适用,针对不同的技术问题但计算目标相同则可能会用到相同的人工智能算法,由此可见,在实际应用中如何选择一种适合的人工智能算法是非常重要的问题,也是容易给技术开发人员造成困扰的问题。
3.在实际的开发过程中,技术开发人员往往需要根据数据量的大小、数据质量的情况和数据本身的特征在众多人工智能算法匹配到一个最优的算法,目前常用的方式是采用选定的算法编写代码后通过运行代码进行测试,通过比较多个算法的测试结果,从中确定一个最优、效率最高的算法。这种方式,存在的主要问题有,一是对于技术开发人员的要求较高,需要对各类算法均有比较深入的了解;二是开发量巨大,由于初筛确定的人工智能算法较多,所以往往需要采用较多算法编写代码并执行测试;三是复杂算法设计困难,对于复杂的技术问题往往需要结合多个人工智能算法才能解决,然而如何选择能够匹配的算法以及如何匹配都存在一定难度。
4.现有智能集成开发环境中比较有代表性的包括百度ai开放平台等,百度ai开放平台是基于百度深度学习平台飞桨的人工智能学习与实训社区,提供在线编程环境、gpu算力、开源算法和开放数据,帮助开发者快速创建和部署人工智能模型。为了提高人工智能软件的开发过程的便捷性,开发百度ai开放平台提供了算法图形拖拽功能,该功能以图形表示机器学习、深度学习等算法,通过拖拽图形实现算法之间的快速组合以具备某种特定功能。但是,由于该功能在拖拽图形过程中未就算法间的组合是否正确给出提示,同时也不能根据用户需求推荐可选图形,因此,软件开发过程对开发人员要求较高,需要开发人员熟悉人工智能算法的处理流程,否则很难生成满足复杂需求的应用程序。此外,百度ai开放平台对于拖拽形成的应用程序,仅有初步筛选的过程,而在该应用程序运行过程中对运行错误的反馈信息较少,因此,为开发人员排除错误增加了困难。


技术实现要素:

5.有鉴于此,本发明提供了一种基于图形可视化的智能代码拼接方法,能够帮助用户迅速、准确地搭建人工智能模型,并且通过优化计算确定人工智能模型的执行顺序生成高效的智能代码。
6.本发明提供的一种基于图形可视化的智能代码拼接方法,包括以下步骤:
步骤1、在智能集成开发环境中,用户将选定的完成任务所需的组件拖动到画布中;所述组件是指实现特定功能的计算单元,所述组件与算法间存在一对多的关系;步骤2、根据用户的选择建立当前画布中组件之间的连接关系,初步构建目标人工智能模型;再检查互连的组件间接口数据的数据类型一致性,根据检查结果调整所述目标人工智能模型,直到检查结果为合格为止;同时,所述智能集成开发环境根据人工智能模型的功能完备性推荐必要组件,并自动建立必要组件与当前画布中相关组件之间的连接关系;步骤3、针对所述目标人工智能模型的用途及性能要求,所述智能集成开发环境为所述目标人工智能模型中的组件推荐优先使用的算法,完成所述目标人工智能模型的构建;步骤4、采用树状结构描述所述步骤3构建的目标人工智能模型,以所述目标人工智能模型的组件作为节点;采用二叉树的后序遍历方式确定所述目标人工智能模型中各组件的执行顺序,生成所述目标人工智能模型的可执行代码,完成了智能代码的拼接。
7.进一步地,所述组件包括数据预处理类组件、模型类组件、损失计算类组件、模型优化类组件、模型评估类组件和数据类型转换类组件。
8.进一步地,所述步骤2中根据用户的选择建立当前画布中组件之间的连接关系,同时,所述智能集成开发环境根据人工智能模型的功能完备性推荐必要组件,并自动建立必要组件与当前画布中相关组件之间的连接关系,初步构建目标人工智能模型,包括以下步骤:步骤2.1、用户确定的待连接的组件为源组件;步骤2.2、所述智能集成开发环境根据所述源组件的输入及输出接口的数据类型,突出显示出当前画布中能够直接与所述源组件建立连接的组件,并将能够直接与所述源组件建立连接的组件命名为直连组件;同时,突出显示出当前画布中通过数据类型转换后能够间接与所述源组件建立连接的所有组件,并将能够间接与所述源组件建立连接的组件命名为间接组件;步骤2.3、用户在所述直连组件和间接组件中选择待连接的组件作为目标组件;若所述目标组件为直连组件,则直接建立所述源组件与目标组件的连接,若所述目标组件为间接组件,则在所述源组件与目标组件之间增加数据类型转换类组件,完成所述源组件与目标组件之间连接的建立;步骤2.4、遍历当前画布中的组件,若仍存在未建立连接的孤立组件,则将当前的目标组件转换为源组件,执行步骤2.2;若不存在孤立组件,则结束本流程。
9.进一步地,所述步骤2中根据检查结果调整所述目标人工智能模型的方式为由用户自主更换适配组件。
10.进一步地,所述步骤2中根据检查结果调整所述目标人工智能模型的方式:当所述检查结果为组件间接口的数据类型不一致时,则所述智能集成开发环境自动更换适配组件,或在不一致的接口之间插入数据类型转换组件。
11.进一步地,所述步骤3中所述智能集成开发环境为所述目标人工智能模型中的组件推荐优先使用的算法的方式为根据历史数据推荐优先使用的算法。
12.进一步地,所述步骤3中所述智能集成开发环境为所述目标人工智能模型中的组
件推荐优先使用的算法的方式为通过对所述目标人工智能模型的局部训练评估确定优先使用的算法,具体包括以下步骤:选择所述目标人工智能模型中模型类组件对应的多个算法,采用每个算法分别构建对应的待测试目标人工智能模型,训练待测试目标人工智能模型,并对训练得到的待测试目标人工智能模型进行测试,根据测试结果计算待测试目标人工智能模型的精确率和召回率;并根据macro

f1算法评估的结果,将得分最高的算法作为最优算法。
13.进一步地,所述步骤4中采用二叉树的后序遍历方式确定所述目标人工智能模型中各组件的执行顺序,生成目标人工智能模型的可执行代码,具体包括以下步骤:步骤4.1、以所述目标人工智能模型中的任一组件为起点,根据组件间的连接关系找到不具有输出接口的组件作为root组件;步骤4.2、遍历root组件的输入接口,对没有输入数据的输入接口,按照该输入接口的连接关系,逐级查找相连的组件,直到找到所有输入接口均具有输入数据的组件或没有输入接口的终端组件为止,执行终端组件,并将执行结果返回给与之相连上一级组件,以此类推,直到完成所有组件的执行,使root组件的所有输入接口均具有输入数据;步骤4.3、输出上述执行过程对应的所述目标人工智能模型的可执行代码。
14.进一步地,所述智能代码拼接方法还包括:在测试数据集上执行由所述步骤4生成的目标人工智能模型的可执行代码,若执行过程中返回执行错误信息,则依据错误信息从算法组合库中选择算法替换所述目标人工智能模型中的错误算法;若执行正常,则对所述目标人工智能模型进行性能评估,若算法组合库中存在由于所述目标人工智能模型的算法组合,则选择最佳算法组合替换所述目标人工智能模型中的相关算法完成对所述可执行代码的优化。
15.有益效果:1、本发明通过从组件和算法两个层级对用户构建的人工智能模型进行初步筛选,推荐用户可选的多种算法,根据筛选和推荐结果完成人工智能模型的构建,从而解决了现有智能集成开发环境存在的初步筛选功能不全的问题,提高了人工智能模型开发的便捷性,保证了人工智能模型的可靠性;在此基础上,经过优化计算确定代码的最优执行方式生成人工智能模型的可执行代码,有效提高了智能集成开发环境生成代码的执行效率。
16.2、本发明对生成的工智能模型的可执行代码进行性能评估,并根据评估结果确定人工智能模型中最佳的算法组合方式,从而实现了针对用户使用需求的人工智能模型的模型层级的优化,进一步提高了人工智能模型的执行性能。
附图说明
17.图1为本发明提供的一种基于图形可视化的智能代码拼接方法的流程图。
18.图2为采用本发明提供的一种基于图形可视化的智能代码拼接方法构建的目标人工智能模型样例示意图。
19.图3为本发明提供的一种基于图形可视化的智能代码拼接方法中目标人工智能模型的可执行代码生成过程示意图。
具体实施方式
20.下面结合附图并举实施例,对本发明进行详细描述。
21.本发明提供的一种基于图形可视化的智能代码拼接方法,其核心思想是:首先,分别从人工智能模型的组件和算法两个层级进行初步筛选并推荐可选项;然后,经过优化计算确定代码的执行方式,生成人工智能模型的可执行代码;最后,执行人工智能模型的可执行代码,在执行过程对人工智能模型进行整体上的性能评估,并根据评估结果对人工智能模型进行模型级的优化。
22.本发明提供的一种基于图形可视化的智能代码拼接方法,流程如图1所示,具体包括以下步骤:步骤1、在智能集成开发环境中,用户从组件库中选择完成任务所需使用的组件,再将选定的组件拖动到画布中。
23.其中,组件是指能够实现特定功能的计算单元,每个组件可与多个具有相似功能的算法或函数相对应。组件库是指由多个组件构成的集合,通常情况下,为实现完整的人工智能计算过程,组件库中需要包括以下几类组件:数据预处理类组件、模型类组件、损失计算类组件、模型优化类组件、模型评估类组件和数据类型转换类组件等。
24.数据预处理类组件用于实现对人工智能算法相关数据的预处理,使相关数据能够更适应人工智能算法的计算过程。数据预处理类组件包括现有的数据预处理方法,如对数据的清洗、增强、裁剪及归一化等处理,具体有角点提取预处理及图片标签编码等等。
25.模型类组件用于构建满足用户需要的人工智能模型。模型类组件包括现有的网络结构或算法,如:决策树、卷积神经网络、朴素贝叶斯算法、逻辑回归算法和深度系学习算法等。
26.损失计算类组件用于计算人工智能模型的输出结果与实际真值(标签)之间的差值,能够在人工智能模型的训练过程中评估模型训练程度的优劣或模型是否收敛等。损失计算类组件包括现有的损失函数,如:均方损失函数、交叉熵损失函数等。由于损失函数不含可学习的参数,因此,实际使用时一般将其作为功能函数放在前向传播过程中,为此,本发明中将损失函数作为与模型类组件相对独立的一类组件进行处理。
27.模型优化类组件用于根据损失计算类组件得到的计算结果对人工智能模型的参数进行优化或加速人工智能模型的收敛等。模型优化类组件包括现有的模型优化算法,如:随机梯度下降法(sgd,stochastic gradient descent)、自适应运动估计算法(adam,adaptive moment estimation)及rmsprop算法(root mean square prop)等。
28.模型评估类组件用于根据设定的指标对训练得到的人工智能模型进行验证和评估。模型评估类组件包括计算预测精确率和召回率,并基于这些数据对模型进行评估的算法。
29.数据类型转换类组件用于实现不同数据类型之间的相互转换,以使待处理数据能够满足不同组件的输入、输出接口对数据格式的要求,从而实现不同组件之间的正确连接。
30.步骤2、根据用户的选择,及智能集成开发环境根据人工智能模型功能完备性的推荐,建立或补全当前画布中各组件之间的连接关系,并进行组件级的初步检查,并根据检查结果对目标人工智能模型进行调整,直到检查结果为合格为止,从而完成满足用户需求的目标人工智能模型的组件级的构建。
31.其中,根据检查结果对目标人工智能模型进行调整的方式,既可以采用由用户自主更换适配组件的方式,也可以采用由智能集成开发环境自动更换适配组件的方式。
32.对于采用由智能集成开发环境自动增补必要组件的方式,步骤2的执行过程具体包括以下步骤:步骤2.1、用户根据需要确定当前画布中待连接的组件,本发明中将用户确定的待连接的组件称为源组件。
33.具体来说,用户通过点击鼠标待连接的组件,或将鼠标移动到待连接的组件上,完成对待连接的组件的选择确认。
34.步骤2.2、根据源组件的输入、输出接口的数据类型,突出显示当前画布中能够直接与源组件建立连接的所有组件,本发明中将能够直接与源组件建立连接的组件命名为直连组件;同时,突出显示当前画布中通过数据类型转换后能够间接与源组件建立连接的所有组件,本发明中将能够间接与源组件建立连接的组件命名为间接组件。
35.具体来说,步骤2.2可采用如下过程实现:当用户点击源组件的输入接口时,智能集成开发环境获取该输入接口的数据类型,并遍历画布上除当前源组件之外的其他组件,选择与源组件的输入接口具有相同数据类型的输出接口的组件作为可连接的直连组件,并突出显示;同时,选择通过数据类型转换后,具有能够与源组件的输入接口相匹配的输出接口的组件作为可连接的间接组件,并突出显示;同理,当用户点击源组件的输出接口时,智能集成开发环境获取该输出接口的数据类型,并遍历画布上除当前源组件之外的其他组件,选择与源组件的输出接口具有相同数据类型的输入接口的组件作为可连接的直连组件,并突出显示;同时,选择通过数据类型转换后,具有能够与源组件的输出接口相匹配的输入接口的组件作为可连接的间接组件,并突出显示。
36.通常情况下组件的输入接口和输出接口由数据结构来定义。本发明中,组件的输入接口和输出接口均采用datatype结构定义接口的类型,包括object、int、string、array、list等。
37.步骤2.3、用户根据需要在突出显示的直连组件和间接组件中选择待连接的组件,本发明中将用户在直连组件和间接组件中选择的组件称为目标组件;当目标组件为直连组件时,直接建立源组件与目标组件的连接,当目标组件为间接组件时,则在数据类型转换类组件中匹配到可用的数据类型转换组件,并将数据类型转换组件增加到源组件与目标组件之间,完成源组件与目标组件之间连接的建立。
38.步骤2.4、遍历当前画布中的组件,若仍存在未建立连接的孤立组件,则将当前的目标组件转换为源组件,执行步骤2.2;若不存在孤立组件,则执行步骤2.5。
39.步骤2.5、根据组件间相关联接口数据类型的一致性要求,对步骤2.4建立的目标人工智能模型进行初步筛选,如果不满足一致性要求,则在不一致的接口处插入数据类型转换组件使关联接口间的数据类型相一致;如果满足一致性要求,则执行步骤2.6。
40.步骤2.6、根据人工智能的计算模式判断目标人工智能模型所包含的组件是否完备,若存在未包含的计算模式所必须的组件,则提示用户增加相关组件,用户增加组件后,将新增组件作为源组件,执行步骤2.2;若目标人工智能模型满足组件的完备性,则满足用户需求的目标人工智能模型的已完成组件级的构建。
41.步骤3、针对目标人工智能模型的用途,及用户对目标人工智能模型的精度或计算效率的要求,智能集成开发环境推荐组件优先使用的算法,从而完成目标人工智能模型的算法级的构建。
42.其中,智能集成开发环境推荐组件优先使用的算法的过程,可采用如下方式实现:一种方式是智能集成开发环境根据历史数据推荐各组件优先使用的算法,具体过程是:智能集成开发环境维护的组件库中,记录着各算法或函数的适用计算场景、算法的输入输出数据格式及计算性能等相关历史数据;根据这些历史数据,结合用户当前设计的目标人工智能模型的用途,即可推荐出各组件优先使用的算法或函数。
43.例如,对于图2中所示的目标人工智能模型,如果组件b3采用的算法的输入数据inport1格式是224*224*3三维数组、inport2的格式object,输出格式为全连接后的一维数组,因此,若需要将与b3的组件b4,b5输入数据inport1的也必须是224*224*3三维数组,inport数据类型是object,outport也必须是全连接后的一维数组。
44.另一种方式是智能集成开发环境通过对目标人工智能模型的局部训练评估确定组件优先使用的算法,即:选择目标人工智能模型中模型类组件对应的多个算法分别进行局部训练,再采用模型评估类组件中的算法对训练结果进行评估,从而确定出模型类组件可选的最优算法,具体过程如下:步骤3.1、选择目标人工智能模型中模型类组件对应的多个算法,采用每个算法分别构建对应的目标人工智能模型,完成每个目标人工智能模型的训练,并对训练得到的目标人工智能模型进行测试,根据测试结果计算目标人工智能模型的精确率和召回率,计算公式如下:公式如下:其中,precision表示精确率,recall表示召回率,tp (true positives)表示 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);fp(false positives)表示被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;fn(false negatives)表示被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;tn(true negatives)表示 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。
45.步骤3.2、基于步骤3.1中得到的精确率和召回率,从多个算法中,根据任务要求确定最优的算法。
46.下面以图2中所示的目标人工智能模型为例进行说明。
47.假设图2中的c1为数据预处理类组件、b2为模型类组件,如果用户想要快速筛选小目标的目标检测最优局部组件,那么可以通过限定相同数据源(3种图像类别)和相同数据预处理算法,即,c1处理后的数组为218*218*3,b2组件的可选算法包括:b2

1(resnet18)、b2

2(vgg16)和b2

3(mobilenetv1)。为了从上述三种算法中确定最佳选项,因此,将以每个算法作为b2组件分别进行训练,即将经过c1处理后的数组分别输入b2

1(resnet18)、b2

2(vgg16)和b2

3(mobilenetv1)中,然后分别采用相同的损失计算类组件,如softmax,计算误差并反向传播后,多次正反向传播的迭代计算;最后,使用macro

f1算法进行评估,具体
公式如下:公式如下:根据上述计算结果,从b2

1、b2

2和b2

3中确定出对所有图像类别的macro

f1的得分最优者,并将筛选出的最优组件算法推荐给用户,从而实现目标人工智能模型在组件层级的性能优化,具体计算结果如下表所示:算法(组件)a类:f1b类:f1c类:f1macro

f1b2

10.6670.8330.7420.747b2

20.6930.7170.9320.781b2

30.9870.7820.8820.884经过macro

f1算法的验证评估后,最好的算法组件为b2

3,那么通过代码生成部分,将b2

3部分的代码替换b2部分的代码,实现最优的组件的算法筛选功能。
48.步骤4、将步骤3构建的目标人工智能模型中的组件作为节点,目标人工智能模型为树状结构,依据二叉树的后序遍历方式确定目标人工智能模型中各组件的执行顺序,生成目标人工智能模型的可执行代码,如图3所示。
49.通常情况下,二叉树的后序遍历方式为:先遍历树的左子树,再遍历树的右子树,最后再遍历根节点,以此类推,直至遍历完整个树。本发明确定目标人工智能模型中各组件的执行顺序的过程为:步骤4.1、以目标人工智能模型中的任一组件为起点,根据组件间的连接关系找到不具有输出接口的组件作为root组件。
50.步骤4.2、遍历root组件的输入接口,对于没有输入数据的输入接口,则根据输入接口的连接关系,逐级查找相连的组件,直到找到所有输入接口均具有输入数据的组件或没有输入接口的组件,执行该组件,并将执行结果返回给与之相连的组件;以此类推,直到完成所有组件的执行,使root组件的所有输入接口均具有输入数据。
51.步骤4.3、执行root组件。输出上述执行过程对应的所述目标人工智能模型的可执行代码。
52.以如图2所示的目标人工智能模型为例,采用本发明提供的依据二叉树的后序遍历方式确定目标人工智能模型中各组件的执行顺序的方式生成执行代码,具体执行过程如下:首先,在目标人工智能模型中任意获取一个组件的数据。假设获取的组件为组件b1,则判断组件b1是否具有输出接口,如果有输出接口,则获取输出接口连接的输入组件a1,再判断组件a1是否具有输出接口,若组件a1没有输出接口则暂存组件a1,并将组件a1作为root组件。
53.其次,遍历root组件的输入端口,如inport1、inport2和inport3;判断组件a1的inport1变量param是否有值,如没有值则继续判断inport1的连接组件b1是否有输入接口,如果没有则执行b1组件,将执行结果存储到对应输入组件a1输入端口inport1的param变量中,并return true;继续遍历inport2,判断inport2的param中是否有值,如果没有则找到inport2的输入组件b2,判断b2组件有输入端口inport1的param是否有值,如果没有值则找
到inport1连接的组件c1,将c1作为参数传入程序2,等待c1执行完成返回true后,判断b2组件inport2的param是否有值,没有值则传入c2作为参数执行程序2,等待c1,c2 return true之后,将b2的inport1的param和inport2的param的值作为参数传入执行b2 ,执行完成return true;继续遍历inport3,判断inport3的param没有值,则找到inport3的输入组件为b3,遍历b3的输入端口inport1的param有值,直接return true;继续遍历b3的inport2,判断b3得inport2得param没有值,找到b3的输入端口的组件c3,将c3作为参数传入程序2进行执行,等待return true,读取b3的inport1和inport2的param作为参数执行b3组件,将结果到a1组件inport3的param变量中去,执行完成return true;等待inport1,inport2,inport3执行完毕。
54.最后,分别读取a1的inport1、inport2和inport3的param变量的值作为参数执行root组件(a1组件),执行root组件,执行完成则return true,并将结果保存至变量result。
55.步骤5、采用测试数据集,执行由步骤4生成的目标人工智能模型的可执行代码,若执行过程中返回执行错误信息,例如,算法的输入数据格式不正确等,则依据算法组合库和错误信息调整目标人工智能模型中的相关算法后,执行步骤5;若执行正常,则对当前目标人工智能模型进行评估,根据评估结果采用算法组合库对当前目标人工智能模型的可执行代码进行整体性的优化,当优化结果满足任务需求后停止优化输出最终的目标人工智能模型的可执行代码。
56.其中,算法组合库为实现人工智能计算功能的多种算法组合的集合,如表1所示,算法组合库的生成方式可采用人为定义,也可以采用如下方式:首先,根据通用的人工智能计算过程,任意选择组件对应的算法,形成人工智能模型模板库,并对模板库中的人工智能模型以精确度和计算效率(收敛速度)作为标准进行评估。
57.可采用如下公式计算准确度:其中,r为第i批次测试样本中识别正确的测试样本数量,n为第i批次测试样本的测试样本总数,n为测试样本的批次总数。
58.可选择如下过程计算收敛速率:记录模型网络层训练过程中每次迭代开始时和结束时的时间和输出的loss值,并对这两次loss值进行相减取绝对值的操作,当相连的两次迭代输出的loss值之间的差值连续k次大于设定的差值阈值且k大于设定的次数阈值时,则所述图像识别模型的收敛速率计算结果约为零;当连续k次迭代输出的loss值均为nan,且k大于设定的次数阈值时,则模型的收敛速率计算结果约为零。
59.其中,l为图像识别模型训练过程中每次迭代输出的loss值,t为当前时间,通过上述公式计算后,得出收敛速率。
60.最后,形成算法组合库,如表1所示。算法组合准确度计算效率(s)a1

b1

c1

d198.2%2.2
a1

b1

c2

d297.6%2.2a1

b1

c3

d394.7%2.2a2

b1

c1

d192.3%1.8a2

b1

c2

d278.4%1.8a2

b1

c3

d373.2%1.8a3

b1

c1

d171.4%1a3

b1

c2

d243.2%1a3

b1

c3

d311.1%1
61.表1 算法组合库在此基础上,当代码执行正常后,采用测试数据集对当前目标人工智能模型进行评估,若评估结果不能满足用户需求,则可从算法组合库中选取同类的算法组合进行替代;也可以选择多个算法单独替换某个组件的算法,并对每种算法的执行结果进行评估,当评估结果满足要求时,停止优化输出最终的目标人工智能模型的可执行代码。
62.综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1