CN111782219B - 基于TensorFlow的自定义类型实现方法和装置 - Google Patents

基于TensorFlow的自定义类型实现方法和装置 Download PDF

Info

Publication number
CN111782219B
CN111782219B CN202010685554.5A CN202010685554A CN111782219B CN 111782219 B CN111782219 B CN 111782219B CN 202010685554 A CN202010685554 A CN 202010685554A CN 111782219 B CN111782219 B CN 111782219B
Authority
CN
China
Prior art keywords
type
custom
operator
graph
tensorflow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010685554.5A
Other languages
English (en)
Other versions
CN111782219A (zh
Inventor
黄高峰
谢翔
陈元丰
晏意林
史俊杰
李升林
孙立林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juzix Technology Shenzhen Co ltd
Original Assignee
Juzix Technology Shenzhen Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juzix Technology Shenzhen Co ltd filed Critical Juzix Technology Shenzhen Co ltd
Priority to CN202010685554.5A priority Critical patent/CN111782219B/zh
Publication of CN111782219A publication Critical patent/CN111782219A/zh
Application granted granted Critical
Publication of CN111782219B publication Critical patent/CN111782219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种基于TensorFlow的自定义类型实现方法和装置,其中,包括:导入静态替换库后,将预设输入转换为自定义数据类型输入,得到原生计算图,再将原生计算图中的原生算子替换为自定义类型算子,从而得到自定义类型前向图;再通过TensorFlow自动求导机制,生成自定义类型后向图,进而执行计算,得到自定义数据类型输出,并转换为预设输出类型输出。即,可以在不修改TensorFlow源码的基础上复用TensorFlow原生计算图生成自定义类型的前向图,并可以借助TensorFlow的自动求导机制创建后向图,使得用户可以进行自定义类型的定制,从而可以快速开发出自定义类型的机器学习应用。

Description

基于TensorFlow的自定义类型实现方法和装置
技术领域
本申请属于互联网技术领域,尤其涉及一种基于TensorFlow的自定义类型实现方法和装置、可读存储介质。
背景技术
随着人工智能技术的不断发展,人们越来越重视数据的价值,对个人信息和数据的隐私保护也提出了更高的要求,这也就促进了密码学和机器学习的结合,从而诞生了加密机器学习平台等。使用这些加密机器学习框架的开发者可以对加密数据进行训练和预测,并且能够通过协议实现数据的隐私计算,从而使得数据不会被泄露。
基于这些加密机器学习框架来训练加密模型,一方面必须使用加密框架特有的应用程序和数据类型,原本开发的明文(非加密)机器学习模型需要重新改造才能使用,另一方面,这些框架不支持自定义类型,这也就导致无法增加新的计算鞋子到加密框架中。
针对现有的机器学习框架不支持自定义数据类型的问题,目前尚未提出有效的解决方案。
发明内容
本申请目的在于提供一种基于TensorFlow的自定义类型实现方法和装置、可读存储介质,可以快速高效开发出自定义类型的机器学习应用,且可以复用原生计算图。
本申请提供一种基于TensorFlow的自定义类型实现方法和装置、可读存储介质是这样实现的:
一种基于TensorFlow的自定义类型实现方法,所述方法包括:
导入静态替换库;
通过输入转换算子,将预设输入转换为自定义数据类型输入;
通过所述自定义数据类型输入构建原生计算图;
通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
在一个实施方式中,上述方法还包括:
设置符合Variant编解码规范的自定义数据类型;
设置输入转换算子和输出转换算子;
动态添加Variant类型支持到全局算子注册列表中。
在一个实施方式中,动态添加Variant类型支持到全局算子注册列表中,包括:
获取全局算子注册列表;
获取用户指定的TensorFlow算子;
在加载所述静态替换库的时候,将Variant类型支持添加到所述全局算子注册列表进行算子属性更新。
在一个实施方式中,动态添加Variant类型支持到全局算子注册列表中,包括:
通过C++层提供给python层的预设接口动态添加Variant类型支持到全局算子注册列表。
在一个实施方式中,通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图包括:
调取预先设定的自定义类型算子梯度函数;
根据所述自定义类型算子梯度函数,通过TensorFlow自动求导机制对所述自定义类型前向图进行自动求导,得到自定义类型后向图。
另一方面,提供了一种基于TensorFlow的自定义类型实现装置,包括:
导入模块,用于导入静态替换库;
第一转换模块,用于通过输入转换算子,将预设输入转换为自定义数据类型输入;
构建模块,用于通过所述自定义数据类型输入构建原生计算图;
替换模块,用于通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
求导模块,用于通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
计算模块,用于通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
第二转换模块,用于通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
在一个实施方式中,上述装置还包括:
第一设置模块,用于设置符合Variant编解码规范的自定义数据类型;
第二设置模块,用于设置输入转换算子和输出转换算子;
添加模块,用于动态添加Variant类型支持到全局算子注册列表中。
在一个实施方式中,所述添加模块包括:
第一获取单元,用于获取全局算子注册列表;
第二获取单元,获取用户指定的TensorFlow算子;
更新单元,用于在加载所述静态替换库的时候,将Variant类型支持添加到所述全局算子注册列表进行算子属性更新。
在一个实施方式中,所述添加模块包括:
添加单元,通过C++层提供给python层的预设接口动态添加Variant类型支持到全局算子注册列表。
在一个实施方式中,所述求导模块包括:
调取单元,用于调取预先设定的自定义类型算子梯度函数;
求导单元,用于根据所述自定义类型算子梯度函数,通过TensorFlow自动求导机制对所述自定义类型前向图进行自动求导,得到自定义类型后向图。
又一方面,提供了一种终端设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现如下方法的步骤:
导入静态替换库;
通过输入转换算子,将预设输入转换为自定义数据类型输入;
通过所述自定义数据类型输入构建原生计算图;
通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
又一方面,提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现如下方法的步骤:
导入静态替换库;
通过输入转换算子,将预设输入转换为自定义数据类型输入;
通过所述自定义数据类型输入构建原生计算图;
通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
本申请提供的标量图实现方法和装置,在导入静态替换库之后,就可以触发通过输入转换算子,将预设输入转换为自定义数据类型输入,从而构建得到原生计算图,然后通过静态替换技术将原生计算图中的原生算子替换为自定义类型算子,从而得到自定义类型前向图;再通过TensorFlow自动求导机制,利用自定义类型前向图生成自定义类型后向图,进而通过前向图和后向图执行计算,得到自定义数据类型输出,再通过输出转换算子,将自定义类型输出转换为预设输出类型输出。即,在整个过程中,可以在不修改TensorFlow源码的基础上复用TensorFlow原生计算图生成自定义类型的前向图,并可以借助TensorFlow的自动求导机制创建后向图,使得用户可以进行自定义类型的定制,且模型可以复用,从而可以快速开发出自定义类型的机器学习应用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的基于TensorFlow的自定义类型实现方法一种实施例的方法流程图;
图2是本申请提供的Static Pass执行之前的计算图;
图3是本申请提供的Static Pass执行之后的计算图;
图4是本申请提供的用户进行自定义类型代码编写的流程示意图;
图5是本申请提供的整体的设置和创建过程流程示意图;
图6是本申请提供的计算机终端的架构图;
图7是本申请提供的基于TensorFlow的自定义类型实现装置的架构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
考虑到对张量图(TensorFlow)可变类型(Variant)的自定义类型定制方法,目前有些可以自定义数据类型的方法,但是目前的方法无法复用原生计算模型下的计算图,以生成自定义计算图(即,前向图),也无法借助TensorFlow的自动求导机制生成自定义类型后向图。
为此,在本例中提供了一种基于TensorFlow的自定义类型实现方法,在不修改TensorFlow源码的基础上复用TensorFlow原生计算图(前向图),然后生成自定义类型的前向图,并且能够借助TensorFlow自动求导机制创建自定义类型后向图。这样可以方便开发者进行自定义类型的定制和新计算协议的引入,同时因为复用了原始的计算模型,因此可以方便用户快速开发自定义类型的机器学习应用。
图1是本申请所述一种标量图实现方法一个实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
具体的,如图1所示,本申请一种实施例提供的一种标量图实现方法可以包括:
步骤101:导入静态替换库;
即,TensorFlow所支持的基本的数据类型,也可以称为TensorFlow原生数据类型,是例如:int32、float32、float64、string等。所涉及的原生算子主要可以是数学算子(math_op),例如:加减乘除等。原生数据类型和原生算子都是TensorFlow原本就支持的,不需要对模型进行任何的改进,就是本身就支持和兼容的。
为了兼容自定义数据类型,可以通过设置静态替换库的方式,向模型中导入静态替换库,从而执行Variant类型注册,使得原生算子可以支持Variant类型。
步骤102:通过输入转换算子,将预设输入转换为自定义数据类型输入;
为了实现自定义数据类型,用户可以按照需求设定自定义类型。考虑到Variant是TensorFlow中可以存储任意类型对象的容器,Variant中被存储的对象需要满足Variant规范,可以通过Variant来定义自定义类型。在实现的时候,定义自定义类型就是定制符合Variant编码规范的类。对于Variant编码规范,可以通过查看tensorflow::Variant类定义说明来确定。
不仅需要通过定制符合Variant编码规范的类来实现自定义数据类型的设定,为了复用原生计算图,还需要设定输入转换算子和输出转换算子。这主要是因为TensorFlow外部无法直接输入或者输出自定义类型值,即,自定义数据类型无法直接使用。因此,在输入阶段需要通过输入转换算子将输入的Tensor(或其他值)转换成存储自定义类型的Variant(可变类型)Tensor,在输出节点需要通过输出转换算子将存储自定义类型的Variant Tensor转换为TensorFlow原生数据类型(即,基本类型,例如:int32,float32,float64,string等)。具体的,输出时候的原生数据类型可以选择string数据类型。
上述的自定义数据类型可以包括但不限于:特定情景的长密文128bit以上或序列化的对象、大整数、复合类型等。
在实现的时候,就可以通过输入转换算子,将预设输入转换为自定义数据类型输入。其中,上述自定义数据类型可以是在运行时候注册的,不需要修改TensorFlow源码,对TensorFlow Variant类型属性进行动态注册。
步骤103:通过所述自定义数据类型输入构建原生计算图;
在将输入转换为自定义数据类型输入之后,就可以基于自定义数据类型构建原生计算图,从而实现对原生计算图的复用。
步骤104:通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
在将数据类型转变为自定义数据类型之后,就可以将原生算子替换为自定义类型算子,自定义类型算子可以是被更新在全局算子注册列表中,这样就可以直接调用以便将原生计算图中的原生算子替换为自定义数据类型算子,以构建自定义类型前向图。在实现的时候,可以动态添加自定义类型算子支持到全局算子注册列表中,例如,可以获取全局算子注册列表;获取用户指定的TensorFlow算子;在加载所述静态替换库的时候,将Variant类型支持添加到所述全局算子注册列表进行算子属性更新。即,修改自定义类型算子对全局算子注册列表进行算子属性更新,将Variant类型支持添加到已经注册的TensorFlow原生算子中,从而使得TensorFlow原生算子可以支持Variant类型。
步骤105:通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
在生成自定义类型前向图之后,可以借助TensorFlow自动求导机制创建自定义类型后向图,从而可以简单高效地进行自定义类型的定制,且计算模型可复用,极大地提高了自定义类型模型机器学习的开发速度。
具体的,通过自定义类型前向图进行自动求导,得到自定义类型后向图可以包括:调取预先设定的自定义类型算子梯度函数;根据所述自定义类型算子梯度函数,对所述自定义类型前向图进行自动求导,得到自定义类型后向图;其中,所述自定义类型算子梯度函数是根据预先添加的自定义数据类型设定的。
步骤106:通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
步骤107:通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
在实现的过程中,TensorFlow可以执行Session.run(),以得到Variant类型的Tensor,fetch转换函数将Varaint类型的Tensor转换为TensorFlow原生数据类型(即,基本类型,例如:int32,float32,float64,string等)。具体的,可以对静态PASS进行拓展,以支持原生算子替换为自定义类型算子。通过重载机器学习优化器算法(例如:SGD、Adam等)最终实现对计算图进行替换,生成基于自定义类型算子构建的计算图。
具体的,TensorFlow中绝大部分算子是不支持Variant类型的,在TensorFlow中可以在使用REGISTER_OP注册算子的时候指定算子支持的类型,为了使得这些原生算子能够使用Variant类型Tensor构建计算图,可以在不修改TensorFlow C++源码的前提下,C++层提供接口给python层动态来添加Variant类型属性到这些算子中,以支持Variant类型的Tensor。TensorFlow的算子可以在框架初始化时注册保存在OpRegistry(全局算子注册表)中,从而可以在C++层实现对math_ops算子属性的更新,以动态添加Variant类型支持到已经注册的TensorFlow原生算子。即,修改TensorFlow注册算子对应的属性信息,以支持Variant类型作为算子输入。
在实现的时候,可以通过自定义类型专用的新Tensor类静态覆盖TensorFlow变量、常量、placeholder等,为了简化用户操作,可以在python层,对TensorFlow的constant、Variable、placeholder、ones、zeros等数据类型进行包装,然后调用输入转换算子,从而将其转换为自定义类型Tensor,从而可以方便外部直接使用而无需处理输入转换。
在导入静态替换库之前,还需要设置符合Variant编解码规范的自定义数据类型;设置输入转换算子和输出转换算子;动态添加自定义类型算子到全局算子注册列表中。具体的,动态添加自定义类型算子到全局算子注册列表中,可以包括:通过C++层提供给python层的预设接口动态添加Variant类型支持到全局算子注册列表。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
在本例中,为了实现自定义类型定义,可以通过TensorFlow Variant(可变类型)的拓展性,定义自定义类型对应的类,并提供自定义类型的数据输入转化算子和输出转化算子。
为了复用原生算子(即,支持基本类型的算子)构成的计算图,将原生计算图转换成自定义类型计算图(前向图),可以动态添加Variant属性以保证原生算子前向图在使用Variant类型时可以顺利构建,另一方面可以使用静态替换方法将TensorFlow原生算子换成为自定义类型的算子,从而生成新的自定义类型前向图。为了实现自定义类型的后向图的自动生成,可以生成自定义类型的算子梯度函数,然后利用替换后的自定义类型的前向图,使用TensorFlow的优化器和自动求导机制生成自定义类型的后向图。
具体的,在实现的过程中可以包括:
1)自定义可变类型:
具体的,可以按照符合Variant编码规范的要求自定义数据类型,其中,Variant(C++类)为TensorFlow中可以存储任意类型对象的容器,这些被存储的对象需要满足Variant编码规范,因此,可以按照Variant编码规范定义自定义类型,即定制符合Variant编码规范的类。在实现的时候,可以按照tensorflow::Variant类定义说明的方式进行可变类型的定义。
2)设置输入自定义类型转换算子和输出自定义类型转换算子:
因为TensorFlow外部无法直接输入、输出自定义类型值,因此,需要通过输入自定义类型转换算子将输入的Tensor(或其他值)转换成存储自定义类型的Variant(可变类型)Tensor,需要通过输出自定义类型转换算子将存储自定义类型的Variant Tensor转换为TensorFlow原生数据类型(即,基本类型,例如:int32,float32,float64,string等)。具体的,可以通过fetch输出,使用string类型作为输出数据类型。
3)动态添加Variant属性到原生math_op的所有算子中:
因为TensorFlow限制外部不能修改内置算子的属性,为了突破这些限制,可以针对c++对象模型的内存布局特点来进行访问,以获取对象的地址或引用,然后对属性列表进行更新。具体的,TensorFlow中绝大部分算子是不支持Variant类型的,TensorFlow中使用REGISTER_OP注册算子的时候指定了算子支持的类型,为了使得这些原生算子(主要为math_ops,即,数学算子)能够使用Variant类型Tensor构建计算图,在不修改TensorFlow C++源码的前提下,C++层提供接口给python层动态来添加Variant类型属性到这些算子中,以支持Variant类型的Tensor。TensorFlow的算子可以在框架初始化时注册保存在OpRegistry(全局算子注册表)中,从而可以在C++层实现对math_ops算子属性的更新,以动态添加Variant类型属性。
实现的时候,可以先获取注册列表,在获取到注册列表后,对属性列表进行更新,从而将Variant类型属性添加到注册列表中。
具体的,可以通过自定义类型专用的新Tensor类静态覆盖TensorFlow变量、常量、placeholder等,为了简化用户操作,可以在python层,对TensorFlow的constant、Variable、placeholder、ones、zeros等数据类型进行包装,然后调用输入转换算子,从而将其转换为自定义类型Tensor,从而可以方便外部直接使用而无需处理输入转换。
4)实现使用自定义类型的算子及算子的梯度函数
自定义类型的Tensor在运行计算的时候,使用的是自定义类型的新算子(该自定义类型的算子可以是用户自己编写的),同样的需要编写对应的算子梯度函数,以便构建后向梯度图。
在实现的过程中,TensorFlow可以执行Session.run(),以得到Variant类型的Tensor,fetch转换函数将Varaint类型的Tensor转换为TensorFlow原生数据类型(即,基本类型,例如:int32,float32,float64,string等)。具体的,可以对静态PASS进行拓展,以支持原生算子替换为自定义类型算子。通过重载机器学习优化器算法(例如:SGD、Adam等)最终实现对计算图进行替换,生成基于自定义类型算子构建的计算图。
其中,静态PASS的原理可以如图所示:
在Static Pass执行之前,如图2所示:
数据X(VarX)和数据Y(VarY),通过原生数据类型(MatMul)进行计算,得到RetVal。
在Static Pass执行之后,如图3所示:
数据X和数据Y,通过自定义类型算子(CostomMatMul)进行计算,得到RetVal。
其中,CustomMatMul泛指自定义类型算子,在注册自定义类型算子并提供转换支持后,借助于静态PASS,用户只需要在原来的模型代码中增加一行代码,就可以导入这个静态优化器,然后可以复用明文模型,以达到构建自定义类型前向图和后向图的目的。
具体的,用户可以按照如图4所示的步骤执行:
S1:编写使用优化器的TensorFlow机器学习训练代码(python);
S2:添加导入库文件(即,Variant方案核心代码);
S3:执行自定义类型的训练和推理。
即,用户可以方便地构建复用原来的模型,构建自定义类型的计算图,实现自定义类型算子的训练和推理等。用户几乎可以按照编写原生TensorFlow机器学习的方式编写训练和推理代码,只需要添加导入核心库的代码即可,然后就可以执行自定义类型的训练和推理。
如图5所示,为整体的设置和创建过程流程图,可以包括:
S1:实现符合Variant编解码规范的自定义类
S2:实现输入、输出自定义类型转换算子;
S3:动态添加Variant属性到原生math-ops的所有算子;
S4:实现使用自定义类型的算子及算子的梯度函数;
S5:静态覆盖TensorFlow变量、常量、placeholder等;
S6:实现并注册定制的feed、fetch的转换函数;
S7:创建静态PASS子类、注册自定义类型算子。
在上例中,实现了在不修改源码的情况下对TensorFlow进行深度定制,可以进行自定义数据类型的定制。为了实现自定义数据类型的定制,借助了TensorFlow Variant可变类型的拓展性,定义了自定义类型对应的类,并提供自定义数据类型的输入转换算子和输出转化算子。进一步的,为了复用原生算子(支持基本类型的算子)构成的计算图,将原生计算图转换成自定义类型计算图(前向图),一方面动态添加Variant属性保证原生算子前向图在使用Variant类型时候能够顺利构建,另一方面使用静态替换方法将TensorFlow原生算子换成自定义类型的算子,生成新的自定义类型前向图。
进一步的,为了实现自定义类型的后向图的自动生成,首先实现自定义数据类型的算子梯度函数,然后利用替换后的自定义类型的前向图,使用TensorFlow的优化器和自动求导机制生成自定义类型的后向图。
通过上述基于TensorFlow的通用自定义类型定制方案,可以定制任意自定义数据类型,并能够实现自定义数据类型的计算图自动生成,可以应用于各类基于TensorFlow的加密机器学习协议定制、大整数机器学习定制、以及基于其他协议的机器学习定制等场景。
本申请上述实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图6是本发明实施例的一种基于TensorFlow的自定义类型实现方法的计算机终端的硬件结构框图。如图6所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的基于TensorFlow的自定义类型实现方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于TensorFlow的自定义类型实现方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在软件层面,上述装置可以如图7所示,包括:
导入模块701,用于导入静态替换库;
第一转换模块702,用于通过输入转换算子,将预设输入转换为自定义数据类型输入;
构建模块703,用于通过所述自定义数据类型输入构建原生计算图;
替换模块704,用于通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
求导模块705,用于通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
计算模块706,用于通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
第二转换模块707,用于通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
在一个实施方式中,上述装置还可以包括:第一设置模块,用于设置符合Variant编解码规范的自定义数据类型;第二设置模块,用于设置输入转换算子和输出转换算子;添加模块,用于动态添加Variant类型支持到全局算子注册列表中。
在一个实施方式中,上述添加模块可以包括:第一获取单元,用于获取全局算子注册列表;第二获取单元,用于获取用户指定的TensorFlow算子;更新单元,用于在加载所述静态替换库的时候,将Variant类型支持添加到所述全局算子注册列表进行算子属性更新。
在一个实施方式中,上述添加模块可以包括:添加单元,用于通过C++层提供给python层的预设接口可动态添加Variant类型支持到全局算子注册列表。
在一个实施方式中,上述求导模块705可以包括:调取单元,用于调取预先设定的自定义类型算子梯度函数;求导单元,用于根据所述自定义类型算子梯度函数,通过TensorFlow自动求导机制对所述自定义类型前向图进行自动求导,得到自定义类型后向图。
本申请的实施例还提供能够实现上述实施例中的基于TensorFlow的自定义类型实现方法中全部步骤的一种电子设备的具体实施方式,所述电子设备具体包括如下内容:处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的基于TensorFlow的自定义类型实现方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤1:导入静态替换库;
步骤2:通过输入转换算子,将预设输入转换为自定义数据类型输入;
步骤3:通过所述自定义数据类型输入构建原生计算图;
步骤4:通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
步骤5:通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
步骤6:通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
步骤7:通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
从上述描述可知,本申请实施例在导入静态替换库之后,就可以触发通过输入转换算子,将预设输入转换为自定义数据类型输入,从而构建得到原生计算图,然后通过静态替换技术将原生计算图中的原生算子替换为自定义类型算子,从而得到自定义类型前向图;再通过TensorFlow自动求导机制,利用自定义类型前向图生成自定义类型后向图,进而通过前向图和后向图执行计算,得到自定义数据类型输出,再通过输出转换算子,将自定义类型输出转换为预设输出类型输出。即,在整个过程中,可以在不修改TensorFlow源码的基础上复用TensorFlow原生计算图生成自定义类型的前向图,并可以借助TensorFlow的自动求导机制创建后向图,使得用户可以进行自定义类型的定制,且模型可以复用,从而可以快速开发出自定义类型的机器学习应用。
本申请的实施例还提供能够实现上述实施例中的基于TensorFlow的自定义类型实现方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于TensorFlow的自定义类型实现方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤1:导入静态替换库;
步骤2:通过输入转换算子,将预设输入转换为自定义数据类型输入;
步骤3:通过所述自定义数据类型输入构建原生计算图;
步骤4:通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
步骤5:通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
步骤6:通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
步骤7:通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出。
从上述描述可知,本申请实施例在导入静态替换库之后,就可以触发通过输入转换算子,将预设输入转换为自定义数据类型输入,从而构建得到原生计算图,然后通过静态替换技术将原生计算图中的原生算子替换为自定义类型算子,从而得到自定义类型前向图;再通过TensorFlow自动求导机制,利用自定义类型前向图生成自定义类型后向图,进而通过前向图和后向图执行计算,得到自定义数据类型输出,再通过输出转换算子,将自定义类型输出转换为预设输出类型输出。即,在整个过程中,可以在不修改TensorFlow源码的基础上复用TensorFlow原生计算图生成自定义类型的前向图,并可以借助TensorFlow的自动求导机制创建后向图,使得用户可以进行自定义类型的定制,且模型可以复用,从而可以快速开发出自定义类型的机器学习应用。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。

Claims (10)

1.一种基于TensorFlow的自定义类型实现方法,其特征在于,所述方法包括:
通过设置静态替换库的方式,向模型中导入静态替换库,以执行Variant类型注册,使得原生算子可支持Variant类型;
通过输入转换算子,将预设输入转换为自定义数据类型输入;
通过所述自定义数据类型输入构建原生计算图;
通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出;
其中,通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图包括:调取预先设定的自定义类型算子梯度函数;根据所述自定义类型算子梯度函数,对所述自定义类型前向图进行自动求导,得到自定义类型后向图,其中,所述自定义类型算子梯度函数是根据预先添加的自定义数据类型设定的。
2.根据权利要求1所述的方法,其特征在于,还包括:
设置符合Variant编解码规范的自定义数据类型;
设置输入转换算子和输出转换算子;
动态添加Variant类型支持到全局算子注册列表中。
3.根据权利要求2所述的方法,其特征在于,动态添加Variant类型支持到全局算子注册列表中,包括:
获取全局算子注册列表;
获取用户指定的TensorFlow算子;
在加载所述静态替换库的时候,将Variant类型支持添加到所述全局算子注册列表进行算子属性更新。
4.根据权利要求2所述的方法,其特征在于,动态添加Variant类型支持到全局算子注册列表中,包括:
通过C++层提供给python层的预设接口动态添加Variant类型支持到全局算子注册列表。
5.一种基于TensorFlow的自定义类型实现装置,其特征在于,包括:
导入模块,用于通过设置静态替换库的方式,向模型中导入静态替换库,以执行Variant类型注册,使得原生算子可支持Variant类型;
第一转换模块,用于通过输入转换算子,将预设输入转换为自定义数据类型输入;
构建模块,用于通过所述自定义数据类型输入构建原生计算图;
替换模块,用于通过静态替换技术将所述原生计算图中的原生算子替换为自定义类型算子,得到自定义类型前向图;
求导模块,用于通过TensorFlow自动求导机制,利用所述自定义类型前向图生成自定义类型后向图;
计算模块,用于通过所述自定义类型前向图和所述自定义类型后向图执行计算,得到自定义数据类型输出;
第二转换模块,用于通过输出转换算子,将所述自定义类型输出转换为预设输出类型输出;
其中,所述求导模块用于调取预先设定的自定义类型算子梯度函数;根据所述自定义类型算子梯度函数,对所述自定义类型前向图进行自动求导,得到自定义类型后向图,其中,所述自定义类型算子梯度函数是根据预先添加的自定义数据类型设定的。
6.根据权利要求5所述的装置,其特征在于,还包括:
第一设置模块,用于设置符合Variant编解码规范的自定义数据类型;
第二设置模块,用于设置输入转换算子和输出转换算子;
添加模块,用于动态添加Variant类型支持到全局算子注册列表中。
7.根据权利要求6所述的装置,其特征在于,所述添加模块包括:
第一获取单元,用于获取全局算子注册列表;
第二获取单元,用于获取用户指定的TensorFlow算子;
更新单元,用于在加载所述静态替换库的时候,将Variant类型支持添加到所述全局算子注册列表进行算子属性更新。
8.根据权利要求6所述的装置,其特征在于,所述添加模块包括:
添加单元,用于通过C++层提供给python层的预设接口动态添加Variant类型支持到全局算子注册列表。
9.一种终端设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现权利要求1至4中任一项所述方法的步骤。
CN202010685554.5A 2020-07-16 2020-07-16 基于TensorFlow的自定义类型实现方法和装置 Active CN111782219B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010685554.5A CN111782219B (zh) 2020-07-16 2020-07-16 基于TensorFlow的自定义类型实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010685554.5A CN111782219B (zh) 2020-07-16 2020-07-16 基于TensorFlow的自定义类型实现方法和装置

Publications (2)

Publication Number Publication Date
CN111782219A CN111782219A (zh) 2020-10-16
CN111782219B true CN111782219B (zh) 2024-03-22

Family

ID=72768342

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010685554.5A Active CN111782219B (zh) 2020-07-16 2020-07-16 基于TensorFlow的自定义类型实现方法和装置

Country Status (1)

Country Link
CN (1) CN111782219B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342346B (zh) 2021-05-18 2022-03-25 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018222896A1 (en) * 2017-05-31 2018-12-06 Intel Corporation Gradient-based training engine for quaternion-based machine-learning systems
CN110166684A (zh) * 2018-06-29 2019-08-23 腾讯科技(深圳)有限公司 图像处理方法、装置、计算机可读介质及电子设备
CN110287771A (zh) * 2019-05-10 2019-09-27 平安科技(深圳)有限公司 图像手掌区域提取方法及装置
CN110795104A (zh) * 2019-10-29 2020-02-14 中国人民解放军国防科技大学 一种用于TensorFlow自定义操作生成的方法
CN111338635A (zh) * 2020-02-20 2020-06-26 腾讯科技(深圳)有限公司 计算图的图编译方法、装置、设备及存储介质
CN111368967A (zh) * 2018-12-25 2020-07-03 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10410010B2 (en) * 2016-03-08 2019-09-10 Oracle International Corporation Language-localized policy statements
US11789724B2 (en) * 2016-08-23 2023-10-17 International Business Machines Corporation Machine learning to facilitate incremental static program analysis
US10831519B2 (en) * 2017-11-22 2020-11-10 Amazon Technologies, Inc. Packaging and deploying algorithms for flexible machine learning

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018222896A1 (en) * 2017-05-31 2018-12-06 Intel Corporation Gradient-based training engine for quaternion-based machine-learning systems
CN110166684A (zh) * 2018-06-29 2019-08-23 腾讯科技(深圳)有限公司 图像处理方法、装置、计算机可读介质及电子设备
CN111368967A (zh) * 2018-12-25 2020-07-03 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法
CN110287771A (zh) * 2019-05-10 2019-09-27 平安科技(深圳)有限公司 图像手掌区域提取方法及装置
CN110795104A (zh) * 2019-10-29 2020-02-14 中国人民解放军国防科技大学 一种用于TensorFlow自定义操作生成的方法
CN111338635A (zh) * 2020-02-20 2020-06-26 腾讯科技(深圳)有限公司 计算图的图编译方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Kubernetes的Tensorflow分布式模型训练平台的设计与实现;王艺颖;《中国优秀硕士学位论文全文数据库信息科技辑》(第02期);全文 *
基于TensorFlow深度学习机制的识别系统的实现及其移动端识别优化技术的研究;尹晓明;《中国优秀硕士学位论文全文数据库信息科技辑》(第07期);全文 *

Also Published As

Publication number Publication date
CN111782219A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN108345511B (zh) 一种应用数据校验方法、装置及电子设备
CN111290778B (zh) Ai模型的包装方法、平台及电子设备
CN107045438B (zh) 一种应用顶层视图处理方法、装置及组件
CN108958796A (zh) 业务请求处理方法及装置、业务请求处理系统
CN109754072B (zh) 网络离线模型的处理方法、人工智能处理装置及相关产品
CN112286529A (zh) 前端页面的开发方法、装置、设备及存储介质
CN104063225B (zh) 锁屏主题开发方法及装置
CN111399840B (zh) 一种模块开发方法及装置
CN105068813A (zh) 一种提供安卓包apk修改服务的方法和装置
CN105335132A (zh) 一种自定义应用程序功能的方法、装置以及系统
CN111784000B (zh) 数据处理方法、装置和服务器
CN111782219B (zh) 基于TensorFlow的自定义类型实现方法和装置
JP2017519314A (ja) 製品、材料及び製造工程の統合化された設計向けのモデルを活用した計算プラットフォーム
CN105573734A (zh) 一种用于提供sdk文件的方法与设备
CN107463422A (zh) 代码部署方法及装置、电子设备
CN113722936A (zh) 一种面向智能制造的领域建模方法及系统
CN108170430A (zh) 一种界面展示的方法及系统
CN113711247A (zh) 一种机器学习模型的数据处理方法、装置及系统
CN110097464B (zh) 智能合约的生成方法、装置、电子设备与存储介质
CN114546973A (zh) 一种模型参数转换的方法及装置
CN108804088B (zh) 协议处理方法和装置
CN113095053A (zh) 网页表格定制方法及装置
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN109144750B (zh) 一种消息处理方法、装置、电子设备及存储介质
CN107665124B (zh) 模块化JavaScript文件处理方法、设备和服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant