一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

将学习模型集成到软件开发系统中的制作方法

2022-02-19 02:03:49 来源:中国专利 TAG:

将学习模型集成到软件开发系统中
1.本技术要求于2019年5月31日提交的美国临时专利申请号62/855,893的优先权的权益,该申请全文以引用方式并入本文以提供公开的连续性。
技术领域
2.本发明整体涉及将学习模型集成到软件开发系统中,包括可更新的机器学习模型在集成开发环境中的变换和呈现。


背景技术:

3.软件开发环境可用于在不同计算平台上以给定编程语言创建软件程序。
附图说明
4.本主题技术的一些特征在所附权利要求书中被示出。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施方案。
5.图1示出了根据一个或多个具体实施的示例网络环境,其中可以实现将学习模型集成到软件开发系统中的系统。
6.图2示出了根据一个或多个具体实施的用于将可更新的机器学习(ml)模型与面向对象的代码集成的集成开发环境的示例软件架构。
7.图3示出了根据一个或多个具体实施的用于将现有ml模型变换为模型规范的示例过程的流程图。
8.图4示出了根据一个或多个具体实施的用于提供变换的ml模型用于在软件开发环境中查看的示例过程的流程图。
9.图5示出了根据一个或多个具体实施的用于将编译的ml模型发送到目标设备的运行环境的示例过程的流程图。
10.图6a示出了根据一个或多个具体实施的现有ml模型和变换的ml模型的数据的示例结构。
11.图6b示出了根据一个或多个具体实施的现有ml接口和变换的ml模型的数据的示例结构。
12.图7示出了可以利用其来实现本主题技术的一个或多个具体实施的电子系统。
具体实施方式
13.下面示出的具体实施方式旨在作为本主题技术的各种配置的描述并且不旨在表示本主题技术可被实践的唯一配置。附图被并入本文并且构成具体实施方式的一部分。具体实施方式包括具体的细节旨在提供对本主题技术的透彻理解。然而,本主题技术不限于本文阐述的具体细节,而是可以采用一个或多个其他具体实施来实践。在一个或多个具体实施中,以框图形式示出了结构和部件,以便避免使本主题技术的概念模糊。
14.使软件开发者能够在软件开发环境中利用机器学习模型的现有方法可能需要大
量的配置。在一些情况下,开发机器学习模型需要设置附加的软件库、硬件配置等,这可能会为某些软件开发者创建进入的感知障碍。此外,许多软件开发者都精通从事面向对象编程的范例,这些范例集成在许多用于开发软件的现有工具中。相比之下,机器学习领域的最新发展已经产生了由不同的第三方提供的软件库,这些软件库被设计为在独立或单独的开发环境中工作,并且可要求软件开发者采用不同的方法来开发有时非常广泛地离开许多开发人员习惯的面向对象编程的理解概念的机器学习模型。
15.在本文所述的一个或多个具体实施中,机器学习(ml)模型可以以类似于第一类对象诸如函数、分类等等的内部表示的方式在集成软件开发环境(ide)内内部地表示,而不是仅仅被表示为正在构建的程序的不透明资源。然后,使用此类模型的软件开发者可以利用ide的生产力特征,诸如键入时的语法检查、自动完成、参数列表中的名称或类型错误检测等,以便调用ml模型功能,就像开发人员在使用标准系统库或分类时一样。实现这一目标的机制包括具有用于描述ml模型、从模型创建派生数据,然后用于索引模型中的名称和关键字,以及ide使用这些索引名称和关键字来提供上述改进的功能的标准规范。
16.在一个实施方案中,机器学习模型可包括一个或多个接口。在该实施方案中,接口是对对象在没有特定植入的情况下的能力的描述。在一个实施方案中,机器学习模型可具有输入接口、输出接口和/或更新接口。在该示例中,输入接口可定义可用于向机器学习模型提供输入的一组函数调用。在该示例中,输出接口可定义可用于从机器学习模型提供输出的一组函数调用。此外,更新接口可定义可用于更新模型参数的一组函数调用。在一个实施方案中,可更新的模型参数可以是学习率、阈值、权重、层数、模型类型、迭代次数和/或机器学习模型中使用的另一个参数中的一者或多者。
17.在一个实施方案中,可将可更新的机器学习模型变换为用于编译成应用程序的对象。在该实施方案中,应用程序可使用该对象来修改机器学习模型。修改可用于微调机器学习模型,可用于选择要使用的机器学习模型类型中的一者(例如,图像识别应用程序可使用具有多个不同原语机器学习模型以从中进行选择的机器学习模型),训练用于用户特定环境和/或其他场景的机器学习模型。例如并且在一个实施方案中,考虑作为使用图像识别机器学习模型的图像识别应用程序的应用程序。该应用程序的基本操作是输入图像并输出标签分类。机器学习模型是可区分一般类别的一般训练模型,此类一般类别从动物或人类识别植物。花商希望使用该图像识别应用程序来识别不同的花。因为该模型当前是一般训练机器学习模型,所以应用程序未被充分训练以区分不同的花(例如,每个花图像都将被识别为“植物”)。利用可更新的机器学习模型,花商可通过为不同类型的花输入一组训练图像和标签来通过应用程序训练图像识别程序。因此,利用可更新的机器学习模型,花商可利用花图像和标签的训练集来训练图像识别应用程序,因此可针对花商的特定需求定制用于该应用程序的机器学习模型。
18.图1示出了根据一个或多个具体实施的示例网络环境100,其中可以实现将可更新的机器学习模型集成到软件开发系统中的系统。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
19.网络环境100包括电子设备110、电子设备115和服务器120。网络106可以通信地
(直接地或间接地)耦接电子设备110和/或服务器120。在一个或多个具体实施中,网络106可以是可包括互联网或可通信地耦接到互联网的设备的互连网络。出于解释的目的,网络环境100在图1中示出为包括电子设备110和115以及服务器120;然而,网络环境100可以包括任何数量的电子设备和任何数量的服务器,诸如服务器云。
20.电子设备110可以是例如台式计算机;便携式计算设备,诸如膝上型计算机、智能电话、外围设备(例如,数字相机、耳机)、平板设备、可穿戴设备(诸如手表、腕带等);或者包括例如一个或多个无线接口的任何其他适当设备,诸如wlan无线电设备、蜂窝无线电设备、蓝牙无线电设备、zigbee无线电设备、近场通信(nfc)无线电设备和/或其他无线电设备。在图1中,通过举例的方式,电子设备110被描绘为台式计算机。电子设备110可以是和/或可以包括下文相对于图7论述的电子系统的全部或部分。
21.电子设备115可包括触摸屏,并且可以是例如便携式计算设备,诸如包括触摸屏的膝上型计算机、包括触摸屏的智能电话、包括触摸屏的外围设备(例如,数字相机、耳机)、包括触摸屏的平板设备、包括触摸屏的可穿戴设备(例如,手表、腕带等)、包括例如触摸屏的任何其他适当设备或者任何具有触控板的电子设备。在一个或多个具体实施中,电子设备115可不包括触摸屏,但可支持触摸屏类似的手势,诸如在虚拟现实环境或增强现实环境中。在一个或多个具体实施中,电子设备115可包括触控板。在图1中,通过举例的方式,电子设备115被描绘为具有触摸屏的移动设备。在一个或多个具体实施中,电子设备115可以是和/或可以包括下文相对于下文相对于图7所讨论的电子系统所讨论的电子设备的全部或一部分。
22.在一个或多个具体实施中,电子设备110可以提供软件开发环境诸如计算机程序,软件开发者可使用该软件开发环境来创建编译的(例如,可执行的)代码、调试、维护或以其他方式支持计算机程序和应用程序。例如,使用编译的代码,软件开发环境可在服务器120的帮助下创建用于在目标设备上部署的软件包。
23.在一个或多个具体实施中,服务器120将编译代码部署到目标设备用于执行。在示例中,电子设备115可以是用于在电子设备115的运行环境中接收编译的代码并执行编译的代码的目标设备。又如,服务器120(和/或另一服务器)可以提供web服务并且可执行与编译的代码相关联的操作,诸如复杂的处理操作。
24.图2示出了根据一个或多个具体实施的用于将机器学习模型与面向对象的代码集成的集成开发环境200的示例软件架构。出于说明的目的,集成开发环境(ide)200被描述为由图1的电子设备110提供,诸如通过电子设备110的处理器和/或存储器;然而,ide 200可以由任何其他电子设备实现。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
25.ide 200可以是多平台软件开发环境,诸如例如,集成开发环境等,其提供软件开发者可用于创建、运行和调试计算机程序代码的特征。在一个或多个具体实施中,ide 200在电子设备110上的过程中执行,诸如运行操作系统(例如mac os xtm等)的台式计算机。
26.在一个或多个具体实施中,ide 200提供可呈现在电子设备110的显示器上的用户
200分开的过程来执行。此外,尽管关于代码生成器240和本文的其他部件提到了面向对象的编程,但是应当理解,本主题技术可以预期其他类型的编程语言,并且本文使用面向对象的编程语言来进行解释。具体地讲,可以关于ide 200的部件使用任何编程语言,并且仍然在本主题技术的范围内。
31.如图所示,ide 200还提供规范转换器220。在示例中,规范转换器220可以从存储装置210接收ml模型212。规范转换器220确定和/或验证第一格式(例如,kerns、tensorflow、caffe等)的现有ml模型是否包括符合由ide 200支持或与ide 200兼容的特定模型规范(例如,由第三方供应商或其他实体提供的模型规范)的足够的数据。示例模型规范可以定义参数、数据格式、数据类型和/或处理或硬件要求,用于将给定的机器学习模型转换成适合于利用ide 200提供的特征的代码格式,包括例如,键入时的语法检查、自动完成、参数列表中的名称或类型错误检测等。规范转换器220将ml模型212变换为变换的ml模型235,其为与ide 200支持的特定模型规范(例如,变换的ml模型)兼容的格式。在具体实施中,规范转换器220可利用序列化格式(例如“protobuf”或协议缓冲器)以将变换的ml模型235存储在特定模型规范的数据模式中。
32.代码生成器240为变换的ml模型生成代码接口。代码接口可以指代特定编程语言的代码语句,其描述使用变换的ml模型所需的函数和/或数据类型。用于ml模型的代码接口的示例是如上所述的输入、输出和更新。在示例中,使用变换的ml模型的函数可接受一个或多个数据类型(例如,作为函数的输入变量)。因此,在示例中,变换的ml模型的代码接口提供与当前项目中使用的特定编程语言兼容的函数和数据类型。在示例中,代码生成器240确定特定编程语言及其api中的数据类型,该api可访问与变换的模型相关联的现有ml数据。在示例中,代码生成器240创建子例程,其有助于经由以特定编程语言支持的特定数据类型访问现有ml数据的值。具有关于为变换的ml模型生成代码接口和其他代码的更多细节的示例过程在图3中描述,其中编程语言及其api支持多种类型,其对应于现有ml数据类型,其中可以基于熟练程序员的适当性或熟悉程度来选择所选的特定类型。
33.在具体实施中,代码生成器240可执行以下操作。对于模型使用的每种类型tm,选择编程语言及其api中可用的类型tpn。在多种类型tp可以是可用的情况下,选择“最佳”类型,使得最常用的类型是不错的选择,编程语言中的一者应该优于仅在api中的一者。对于模型使用的每个函数fm,它将一组types tmi 1、tmi2的值作为输入,并作为输出返回一组values tmv1、tmv2等—生成将对应类型tpi1、tpi2、tpv1、tpv2作为输入的函数。在函数内部,生成将每种模型类型转换为语言类型或从语言类型转换的代码,这可能很简单,也可能需要多个步骤。这样生成的代码称为子例程。
34.在一个或多个具体实施中,还从ml模型生成附加的基于非代码的有效载荷(例如,“编译的ml模型”)并将其递送到发送至目标设备的包中。包可以包括所生成的代码接口和所生成的代码的编译表示,并且包括该编译的ml模型(例如,基于非代码的有效载荷)。这种基于非代码的有效载荷不同于上面讨论的所生成的代码接口和代码的编译表示。在示例中,在这方面编译的ml模型包括训练的权重和其他信息,这些信息在目标设备上是有用的,并且由于以下原因,没有以适当的形式与上面讨论的所生成的代码一起提供:1)源代码不能很好地保存大量数据(阻抗、空间、速度);以及2)尽管用户非常容易访问,但源代码类型通常不像机器(例如,软件)的数据类型那样容易内省—因此希望推断该模型的其他部件可
能更喜欢访问该数据(例如,确定用户想要的图像的大小)。
35.代码生成器240还可以确定可能需要哪些(如果有的话)其他现有软件库(例如,存储在存储装置210上)用于编译和/或执行变换的ml模型,诸如为执行gpu上的指令提供支持的图形处理单元(gpu)库。在图6中更详细地描述了与变换的ml模型相关联的数据的示例结构。
36.另外,在示例中,可使用项目导航器284在ui 280中查看所生成的代码接口。用于查看所生成的代码接口的示例过程在图4中更详细地讨论。
37.语言编译器260编译所生成的代码接口并生成用于代码接口的目标代码。
38.如进一步所示,作为构建可执行应用程序的一部分,链接器/封装器270组合一个或多个目标文件(例如,来自语言编译器260),以及在一些实例中,来自现有软件库(例如,用于机器学习的gpu库)的代码,将上述目标代码和/或库代码变换为可由电子设备110执行的可执行机器代码。链接器/封装器270的封装器部分将可执行代码读到存储器中并运行导致运行应用程序的代码。又如,链接器/封装器270可以将可执行代码发送到目标电子设备以进行部署。用于将完全编译的ml模型发送到目标设备的运行环境的示例过程在图5中更详细地讨论。
39.ide 200还包括为变换的ml模型提供不同特征的预处理部件。如图所示,自动代码文档部件252执行预处理以实现与用户输入的代码和/或项目中的现有代码对应的实时文档。在示例中,自动代码文档部件252提供关于ml模型代码的各方面的信息,并提供关于模型的附加细节,诸如给定函数的描述、函数的参数列表、与由函数抛出的错误(如果有的话)相关的信息、函数的任何返回值,以及代码的任何注释。当用户在ide 200的编辑器中正向代码列表282键入时,代码完成部件254提供代码的自动完成建议。索引器提供用于由搜索界面286进行搜索的ml模型代码的索引。用于上述预处理部件的任何数据(例如,搜索索引、文档、自动完成建议等)可以存储在数据库258中。
40.图3示出了根据一个或多个具体实施的用于将现有ml模型变换为模型规范的示例过程300的流程图。出于解释的目的,本文主要参考图2的ide 200的各种部件来描述过程300,该过程可由图1的电子设备110的一个或多个处理器执行。然而,过程300不限于电子设备110和/或ide200,并且过程300的一个或多个框(或操作)可以由其他合适的设备和/或软件开发环境的一个或多个其他部件来执行。进一步出于解释的目的,过程300的框在本文中被描述为顺序地或线性地发生。然而,过程300的多个框可并行地发生。此外,过程300的框不必按所示顺序执行,并且/或者过程300的一个或多个框不必执行和/或可由其他操作替代。
41.ide 200的ml模型变换器215确定第一格式(例如,kerns、tensorflow等)的机器学习(ml)模型包括符合第二格式的特定模型规范的足够的数据(302)。在示例中,第二格式对应于面向对象的编程语言(例如,swift、objective c等)。具体地讲,规范转换器220可确定现有模型是否缺少转换所需的数据/对象,并且确定现有模型是否整体无效和/或不一致(例如,不正确的数据、由该模型执行的一个或多个操作与所声称的目标或结果不一致等)。在ml模型包括不充分数据或无效的情况下,ml模型变换器215可提供错误声明并放弃对ml模型的进一步处理。
42.规范转换器220还可对现有模型内的数据执行附加变换,以更好地适应用户开发
环境中的现有库。(例如,其中现有模型为tensorflow格式,然后将模型数据变换为基于用户开发环境中现有库的格式)。
43.在确定ml模型包含足够的数据之后,规范转换器220将ml模型变换为特定模型规范并提供因此与特定模型规范兼容的变换的ml模型(304)。
44.在示例中,变换ml模型可以包括在ml模型中映射ml操作(例如,对应于由表示ml模型的图的节点执行的操作)以匹配可以由模型规范定义的对应操作。在处于这种兼容格式之后,ide 200可以进一步处理变换的ml模型并提供如上面图1中所描述的附加功能。
45.规范转换器220标记变换的ml模型以指示ml模型已变换为特定模型规范(306)。例如,标记包括将标识符分配给变换的ml模型,以便ide 200可以引用变换的ml模型。
46.代码生成器240生成用于变换的ml模型的代码接口和代码(308)。代码接口包括面向对象的编程语言的代码语句,其中代码语句对应于表示变换的ml模型的对象。所生成的代码也可以对应于对象。例如,该对象可以包括用于执行变换的ml模型的操作的一个或多个函数的代码,其中每个函数可以包括映射到由变换的ml模型利用的数据和/或数据类型的输入数据类型。对应于变换模型的对象、代码和代码接口可以在ide 200的用户界面280中呈现(例如,在代码列表282和/或项目导航器284中)。
47.在一个或多个具体实施中,代码生成器240执行操作以生成用于变换的ml模型的代码。例如,代码生成器240确定现有ml模型使用的输入数据格式(例如,具有浮点值的3d矩阵,其在存储器中串行编码),并确定变换的模型的目标数据格式(例如,nsarrays、数组的swift数组或新的自定义n维矩阵)。
48.代码生成器240确定现有ml模型的硬件/处理要求(例如,现有模型是在gpu、cpu上还是通过云运行)并生成在gpu、cpu和/或云上运行的代码等。此外,代码生成器240获取ml模型中的机器学习原语(例如,实体、属性、矩阵和矩阵处理步骤),并生成符合特定规范的数据对象。另外,代码生成器240将函数调用映射到输入数据类型(例如,输入向量、矩阵或ml模型所需的任何内容)。代码生成器240以编程语言生成函数。
49.软件开发者可编辑从代码生成器240所生成的代码。例如,软件开发者可查看生成的函数并确定是否需要进行其他编辑。根据在ide 200中处理的当前项目,软件开发者可以决定以当前项目的给定编程语言(例如,objective c、swift等)编写的附加代码需要满足当前项目的目标中的一者。例如,当前项目可以对应于通过利用给定的ml模型来预测特定地理区域的住宅价格。可以为ml模型生成对应于预测房屋价格的函数,其中软件开发者决定需要修改和/或附加代码(例如,调整价格计算、使用ml模型未提供的附加数据等)。然后,软件开发者可以通过编辑该函数和/或创建调用该函数的新代码来利用ide 200的功能,同时有利地获取键入时的实时语法检查、自动完成、检测参数列表中的名称或类型错误等有益效果。
50.在用于ml模型的代码被生成和/或由软件开发者修改或添加代码之后,语言编译器260编译所生成的代码和/或包括由软件开发者提供的与变换的机器学习模型对应的任何代码修改或添加(310)。编译变换的机器学习模型包括生成用于面向对象的编程语言的目标代码。语言编译器260还将代码接口编译到变换的ml模型(例如,以在表示ml模型的对象上强制执行某些属性)。可以通过编译所生成的代码和代码接口来生成各个目标代码。此外,由软件开发者提供的任何代码修改或添加(例如,调用所生成的函数的代码)被编译以
生成相应的目标代码。
51.在示例中,链接器/封装器270将与ml模型和/或由软件开发者修改或添加的代码对应的所有目标代码进行组合,并将目标代码变换为可执行的机器代码(用于目标计算设备)。可执行机器代码可以是软件包的形式,该软件包可以部署到目标计算设备以便在目标计算设备的运行环境中执行。在示例中,链接器/封装器270可以将包括编译的代码的包发送到目标设备的运行环境(312)。在图5中讨论了将用于执行的编译的ml模型部署在目标设备上的另一示例。
52.图4示出了根据一个或多个具体实施的用于提供变换的ml模型以在软件开发环境(例如ide 200)中查看的示例过程400的流程图。出于解释的目的,本文主要参考图2的ide 200的部件来描述过程400,该过程可由图1的电子设备110的一个或多个处理器执行。然而,过程400不限于电子设备110和/或ide 200,并且过程400的一个或多个框(或操作)可以由其他合适的设备和/或软件开发环境的一个或多个其他部件来执行。进一步出于解释的目的,过程400的框在本文中被描述为顺序地或线性地发生。然而,过程400的多个框可并行发生。此外,过程400的框不必按所示顺序执行,并且/或者过程400的一个或多个框不必执行和/或可由其他操作替代。
53.ide 200接收变换的模型文件(402)。在示例中,在用户拖动文件并将文件放入ide 200的用户界面280之后,在ide 200中接收变换的模型文件。变换的模型文件可以如上所述通过参考图3所描述的操作来提供,并且本文假定符合ide 200支持的特定模型规范。在示例中,变换的模型文件可以包括指示模型文件对应于特定模型规范的标签(例如,标识符)。响应于拖动的文件,ide 200可以创建与变换的模型文件对应的新项目,或者如果当前项目已经打开,则将变换的模型文件添加到该当前项目。
54.如前所述,软件开发者可查看和/或编辑与变换的模型文件对应的代码。例如,软件开发者可查看与变换的模型文件相关联的函数,并确定是否需要附加的编辑。更具体地讲,软件开发者可以决定以当前项目的给定编程语言(例如,objective c、swift等)编写的附加代码需要满足当前项目的目标中的一者。例如,当前项目可以对应于通过利用给定的ml模型来预测特定地理区域的住宅价格。可已生成对应于预测房屋价格的函数,其中软件开发者决定需要修改和/或附加代码(例如,调整价格计算、使用ml模型未提供的附加数据等)。然后,软件开发者可以通过编辑该函数和/或创建调用该函数的新代码来利用ide 200的功能,同时有利地获取键入时的实时语法检查、自动完成、检测参数列表中的名称或类型错误等有益效果。
55.ide 200提供变换的模型文件的图形视图(404)。用户界面280在ide 200中将模型显示为对象(例如,对应于面向对象的编程语言),并且ide 200可提供关于对象的属性的信息和/或访问与ide 200的预处理部件(索引器256、代码完成部件254和/或自动代码文档部件252)相关联的数据库258中的数据。又如,用户界面280的项目导航器284提供具有不同属性的对象的分层视图和/或提供相关联文件的列表(例如,支持来自软件库的文件)或其他相关文件/资产(例如,图像、视频、文本等)。因此,用户可查看项目导航器284中的对象并与之交互,并利用ide 200提供的功能(例如,查看和/或编辑与变换的模型文件对应的代码)。此外,用户可以向当前项目添加其他文件和/或资产。
56.ide 200提供与变换的模型文件相关联的代码列表(406)。例如,用户界面280提供
ide 200的代码列表282中的代码列表。这样,用户可查看和/或编辑与变换的模型文件相关联的代码,并且有利地访问由ide 200提供的功能,诸如类型检查、检测编码错误、调试代码、代码完成、语法突出显示,以及提供代码列表282中的代码的其他上下文相关的信息。
57.在一个或多个具体实施中,ide 200可以将编译的ml模型部署到一个或不同的目标设备用于执行。编译的ml模型可以包括在能够在给定目标计算设备上部署和执行的软件包中。当在ide 200中处理项目时,可以选择一个或多个目标设备用于在目标平台上进行编译和/或部署。ide 200可生成用于部署到此类目标设备的变换的ml模型的不同变体,其可以针对给定平台的特定硬件和/或软件功能进行优化。在示例中,ide 200可以将编译的ml模型发送到服务器120,服务器120然后可将编译的模型提供给目标设备。
58.图5示出了根据一个或多个具体实施的用于将编译的ml模型发送到目标设备(例如,图1中的电子设备115)的运行环境的示例过程500的流程图。出于解释的目的,本文主要参考图2的ide 200的部件来描述过程500,其可以由图1的电子设备110执行。然而,过程500不限于电子设备110和/或ide 200,并且过程500的一个或多个框(或操作)可以由其他合适的设备和/或软件开发环境的一个或多个其他部件来执行。进一步出于解释的目的,过程500的框在本文中被描述为顺序地或线性地发生。然而,过程500的多个框可并行发生。此外,过程500的框不必按所示顺序执行,并且/或者过程500的一个或多个框不必执行和/或可由其他操作替代。
59.代码生成器240从ml文档文件和/或其他资产生成ml模型代码(502)。在示例中,可以如上参考图3所描述的那样执行构建ml模型代码。在该示例中,生成ml模型利用实现文件(例如,.m文件)或源代码(例如,swift或objective c源代码)和/或对应于ml模型的数据和/或其他代码。
60.软件开发者可查看和/或编辑与ml模型对应的源代码。例如,软件开发者可查看与ml模型相关联的函数,并确定是否需要附加编辑。更具体地讲,软件开发者可以决定以当前项目的给定编程语言(例如,objective c、swift等)编写的附加代码需要满足当前项目的目标中的一者。例如,当前项目可以对应于通过利用给定的ml模型来预测特定地理区域的住宅价格。可已生成对应于预测房屋价格的函数,其中软件开发者决定需要修改和/或附加代码(例如,调整价格计算、使用ml模型未提供的附加数据等)。然后,软件开发者可以通过编辑该函数和/或创建调用该函数的新代码来利用ide 200的功能,同时有利地获取键入时的实时语法检查、自动完成、检测参数列表中的名称或类型错误等有益效果。
61.语言编译器260从ml模型代码和/或由软件开发者提供的任何附加代码(例如,调用与由ml模型提供的操作对应的函数)生成编译的ml模型代码(504)。在示例中,语言编译器260提供编译的目标代码(例如,.o文件)和/或二进制文件(例如,可执行的机器代码)。
62.链接器/封装器270将包括编译的ml模型和/或由软件开发者提供的任何附加代码的包发送到目标设备(或用户的桌面)上的运行环境用于执行(506)。在示例中,可以对应于相应的目标设备(例如,智能手机、可穿戴设备、流媒体设备等)发送不同的变体。又如,链接器/封装器270可以将编译的ml模型发送到归档或包中,然后将其发送到云(例如,应用商店或应用服务器、云计算服务等)以进行部署和/或执行。ml模型可以包括关于将为其构建模型的设备类型的信息(例如,目标运行环境)。又如,用户可以在ide 200中选择目标设备,使得语言编译器260和/或链接器/封装器270可进一步优化编译的ml模型。例如,当目标设备
上存在此类gpu时,语言编译器260可优化代码的编译以使用目标设备的gpu。又如,语言编译器260可优化用于在云计算服务上执行的编译,该云计算服务可以利用网络(例如,网络106)中提供的服务器(例如,服务器120)来提供用于部署和执行编译的代码的服务。
63.图6a示出了根据一个或多个具体实施的现有ml模型610和变换的ml模型630的数据的示例结构。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
64.如上文在图1至图4所述,可将现有ml模型变换为符合特定模型规范的变换的模型。如图所示,ml模型610表示与特定模型规范不同格式的现有模型。ml模型610包括ml原语612、ml数据的ml数据格式614(例如,ml数据集用于训练、验证、测试等目的),以及一组硬件和/或处理要求616。ml原语612可以包括由ml模型610使用的诸如实体、属性、矩阵和矩阵处理步骤的原语。ml数据格式614可以指示ml数据是在存储器中串行编码的格式,或者一些其他数据格式等。该组硬件和/或处理要求616可以包括指示ml模型610需要使用gpu和/或cpu和/或云计算服务用于特定操作的信息。此外,ml模型610可包括一个或多个ml接口618(例如,输入、输出、更新等)和参数618。在一个实施方案中,ml接口618是如上所述的用于机器学习模型的接口,并且参数618是与ml模型610相关联的参数(例如,机器学习模型的权重、用于机器学习模型的层数、阈值、学习率和/或其他类型的机器学习模型参数)。
65.变换的ml模型630包括代码接口640。代码接口640包括函数642、子例程644、数据类型646和接口648。函数642可以包括将函数调用映射到输入数据类型的信息(例如,输入矢量、矩阵或ml模型610所需的任何内容)。数据类型646(例如,nsarrays、数组的数组,诸如数组的swift数组,或者新定义的n维矩阵)可以对应于ml数据格式614,并且使得变换的ml模型630能够访问ml数据格式614中的ml数据。为了有助于访问此类ml数据,子例程644为所利用的函数642提供子例程。变换的ml模型630进一步包括编译的ml模型代码650,其可以是与目标设备对应的目标代码格式。接口648为如上所述的用于变换的ml模型的接口。在一个实施方案中,编译的ml模型650可包括参数654,该参数是用于变换的ml模型630的参数。在一个实施方案中,参数654可以是与ml模型610相关联的参数620(或其变换)。
66.任选地,变换的ml模型630包括一个或多个所需的软件库660或与其相关联,这取决于ml模型610的该组硬件和/或处理要求616(例如,gpu处理、云计算等)。虽然在一个实施方案中,所需的软件库652可为变换的ml模型630的一部分,但在另选实施方案中,所需的软件库652中的一些或全部可使用变换的ml模型630安装在设备上。
67.图6b示出了根据一个或多个具体实施的现有ml接口618和变换的ml模型648的数据的示例结构。在图6b中,ml接口618可包括输入656a、输出656b和/或更新656c接口中的一者或多者。在一个实施方案中,输入接口656a可定义可用于向机器学习模型提供输入的一组函数调用。在该实施方案中,输出接口656b可定义可用于从机器学习模型提供输出的一组函数调用。此外,更新接口656c可定义可用于更新模型参数的一组函数调用。
68.在一个实施方案中,ml接口648被变换为变换的ml模型630的接口648。在该实施方案中,ml接口可包括接口654a

654c中的一者或多者,诸如输入接口654a、输出接口654b和/或更新接口654c。
69.图7示出了可以利用其来实现本主题技术的一个或多个具体实施的电子系统700。电子系统700可为图1所示的电子设备110和/或服务器120和/或可为其一部分。电子系统700可包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统700包括总线708、一个或多个处理单元712、系统存储器704(和/或缓存)、rom 710、永久性存储设备702、输入设备接口714、输出设备接口706以及一个或多个网络接口716,或其子集及变体形式。
70.总线708总体表示通信地连接电子系统700的许多内部设备的所有系统总线、外围设备总线和芯片组总线。在一个或多个具体实施中,总线708将一个或多个处理单元712与rom 710、系统存储器704和永久性存储设备702通信地连接。一个或多个处理单元712从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行本主题公开的过程。在不同的具体实施中,一个或多个处理单元712可为单个处理器或者多核处理器。
71.rom 710存储一个或多个处理单元712以及电子系统700的其他模块所需的静态数据和指令。另一方面,永久性存储设备702可为读写存储器设备。永久性存储设备702可为即使在电子系统700关闭时也存储指令和数据的非易失性存储器单元。在一个或多个具体实施中,海量存储设备(诸如,磁盘或光盘及其相应盘驱动器)可被用作永久性存储设备702。
72.在一个或多个具体实施中,可移除存储设备(诸如软盘、闪存驱动器及其对应的磁盘驱动器)可以用作永久性存储设备702。与永久性存储设备702一样,系统存储器704可为读写存储器设备。然而,与永久性存储设备702不同,系统存储器704可为易失性读写存储器,诸如随机存取存储器。系统存储器704可存储一个或多个处理单元712在运行时可能需要的指令和数据中的任何指令和数据。在一个或多个具体实施中,本主题公开的过程被存储在系统存储器704、永久性存储设备702和/或rom 710中。一个或多个处理单元712从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一个或多个具体实施的过程。
73.总线708还连接至输入设备接口714和输出设备接口706。输入设备接口714使得用户能够向电子系统700传送信息以及选择命令。可与输入设备接口714一起使用的输入设备可包括例如字母数字混合键盘和指向设备(也称为“光标控制设备”)。输出设备接口706可例如使得能够显示电子系统700所生成的图像。可与输出设备接口706一起使用的输出设备可包括例如打印机和显示设备,诸如液晶显示器(lcd)、发光二极管(led)显示器、有机发光二极管(oled)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其他设备。一个或多个具体实施可包括既充当输入设备又充当输出设备的设备,诸如触摸屏。在这些具体实施中,提供给用户的反馈可以是任何形式的感官反馈,诸如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
74.最后,如图7所示,总线708还通过一个或多个网络接口716将电子系统700耦接到一个或多个网络和/或者耦接到一个或多个网络节点,诸如图1中所示的电子设备110和/或115。以此方式,电子系统700可为计算机网络(诸如lan、广域网(“wan”)或内联网)的一部分,或者可为多个网络的网络(诸如互联网)的一部分。电子系统700的任何或所有部件可与本主题公开一起使用。
75.可以利用编写有一个或多个指令的有形计算机可读存储介质(或一种或多种类型
的多个有形计算机可读存储介质)部分地或全部地实现本公开范围之内的具体实施。有形计算机可读存储介质实质上也可以是非暂态的。
76.计算机可读存储介质可以是任何可以由通用或专用计算设备读、写或以其他方式访问的存储介质,包括任何能够执行指令的处理电子器件和/或处理电路。例如,非限制地,计算机可读介质可包括任何易失性半导体存储器,诸如ram、dram、sram、t

ram、z

ram和ttram。计算机可读介质也可包括任何非易失性半导体存储器,诸如rom、prom、eprom、eeprom、nvram、闪存、nvsram、feram、fetram、mram、pram、cbram、sonos、rram、nram、赛道存储器、fjg和millipede存储器。
77.此外,计算机可读存储介质可包括任何非半导体存储器,诸如光盘存储装置、磁盘存储装置、磁带、其他磁性存储设备或者能够存储一个或多个指令的任何其他介质。在一个或多个具体实施中,有形计算机可读存储介质可直接耦接到计算设备,而在其他具体实施中,有形计算机可读存储介质可例如经由一个或多个有线连接、一个或多个无线连接、或它们的任意组合而间接地耦接到计算设备。
78.指令可以是直接能执行的,或者可用于开发可执行指令。例如,指令可被实现为可执行的或不可执行的机器代码,或者可被实现为可被编译以产生可执行的或不可执行的机器代码的高级语言指令。此外,指令也可被实现为数据,或者可包括数据。计算机可执行指令也可以任何格式组织,包括例程、子例程、程序、数据结构、对象、模块、应用、小程序、函数等。如本领域技术人员认识到的那样,包括但不限于指令的数量、结构、序列和组织的细节可明显不同,而不改变底层的逻辑、功能、处理和输出。
79.虽然以上论述主要涉及执行软件的微处理器或多核处理器,但一个或多个具体实施由一个或多个集成电路诸如asic或fpga执行。在一个或多个具体实施中,此类集成电路执行存储在电路自身上的指令。
80.本领域的技术人员将会认识到,本文所述的各种例示性的框、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上文已经一般性地按照功能性对各种例示性的框、模块、元件、部件、方法和算法进行了描述。此类功能性是被实现为硬件还是软件取决于具体应用以及对整个系统施加的设计约束。技术人员对于每个具体应用可通过不同方式实现所描述的功能性。各种部件和框可被不同地布置(例如,以不同的顺序排列,或以不同的方式划分),而不脱离本主题技术的范围。
81.应当理解,本发明所公开的过程中的框的特定顺序或分级结构为示例性方法的例示。基于设计优选要求,应当理解,过程中的框的特定顺序或者分级结构可被重新布置或者所有示出的框都被执行。这些框中的任何框可被同时执行。在一个或多个具体实施中,多任务和并行处理可能是有利的。此外,上述具体实施中各个系统部件的划分不应被理解为在所有具体实施中都要求此类划分,并且应当理解,程序部件和系统可一般性地被一起整合在单个软件产品中或者封装到多个软件产品中。
82.如本说明书以及本专利申请的任何权利要求中所用,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”及“存储器”均是指电子设备或其他技术设备。这些术语排除人或者人的群组。出于本说明书的目的,术语“显示”或“正在显示”意指在电子设备上显示。
83.如本文所用,在用术语“和”或“或”分开项目中任何项目的一系列项目之后的短语

中的至少一者”是将列表作为整体进行修饰,而不是修饰列表中的每个成员(即每个项目)。短语“中的至少一者”不要求选择所列出的每个项目中的至少一者;相反,该短语允许包括任何一个项目中的至少一个和/或项目的任何组合中的至少一个和/或每个项目中的至少一个的含义。举例来说,短语“a、b和c中的至少一者”或“a、b或c中的至少一者”各自是指仅a、仅b或仅c;a、b和c的任意组合;和/或a、b和c中的每一个中的至少一个。
84.谓词字词“被配置为”、“可操作以”以及“被编程以”并不意味着对某一主题进行任何特定的有形或无形的修改而是旨在可互换使用。在一个或多个具体实施中,被配置为监视和控制操作或部件的处理器也可以是意指处理器被编程以监视和控制操作或者处理器可操作以监视和控制操作。同样,被配置为执行代码的处理器可解释为被编程以执行代码或能够操作以执行代码的处理器。
85.短语诸如方面、该方面、另一方面、一些方面、一个或多个方面、具体实施、该具体实施、另一具体实施、一些具体实施、一个或多个具体实施、实施方案、该实施方案、另一实施方案、一些实施方案、一个或多个实施方案、配置、该配置、其他配置、一些配置、一种或多种配置、主题技术、公开、本公开、它们的其他变型等等都是为了方便,并不意味着涉及这样的一个或多个短语的公开对于主题技术是必不可少的,也不意味着这种公开适用于主题技术的所有配置。涉及此类一个或多个短语的公开可适用于所有配置或一个或多个配置。涉及此类一个或多个短语的公开可提供一个或多个示例。短语诸如方面或一些方面可指代一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。
[0086]“示例性”一词在本文中被用于意指“用作示例、实例或者例示”。在本文中被描述为“示例性的”或作为“示例”的任何实施方案不必被理解为优选于或优于其他具体实施。此外,术语“包括”、“具有”等在一定程度上用于说明书或权利要求中,此类术语旨在以类似于术语“包括”当用作过渡字词用于权利要求中时“包括”被解释的方式包含在内。
[0087]
本领域的普通技术人员已知或稍后悉知的贯穿本公开描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求书所涵盖。此外,本文所公开的任何内容并非旨在提供给公众,而与该公开是否明确地被陈述在权利要求中无关。根据35u.s.c.
§
112第六段的规定,不需要解释任何权利要求元素,除非使用短语“用于
……
的装置”明确陈述了该元素,或者就方法权利要求而言,使用短语“用于
……
的步骤”陈述了该元素。
[0088]
先前的描述被提供以使得本领域的技术人员能够实践本文所述的各个方面。这些方面的各种修改对本领域的技术人员而言是显而易见的,并且本文所限定的通用原则可应用于其他方面。因此,本权利要求书并非旨在受限于本文所示的各个方面,而是旨在使得全部范围与语言权利要求书一致,其中提及单数形式的要素并非旨在意味着“仅仅一个”,而是指“一个或多个”,除非被具体指出。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代名词(例如,他的)包括女性和中性(例如,她的和它的),并且反之亦然。标题和子标题(如果有的话)仅为了方便起见而使用并且不限制本主题公开。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献