CN110520835B - 在模型转换期间跟踪轴 - Google Patents
在模型转换期间跟踪轴 Download PDFInfo
- Publication number
- CN110520835B CN110520835B CN201880021599.3A CN201880021599A CN110520835B CN 110520835 B CN110520835 B CN 110520835B CN 201880021599 A CN201880021599 A CN 201880021599A CN 110520835 B CN110520835 B CN 110520835B
- Authority
- CN
- China
- Prior art keywords
- axis order
- order
- current
- target
- source
- 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
Links
- 238000006243 chemical reaction Methods 0.000 title description 24
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000013507 mapping Methods 0.000 claims abstract description 36
- 238000013528 artificial neural network Methods 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims description 47
- 238000007634 remodeling Methods 0.000 claims description 14
- 210000002569 neuron Anatomy 0.000 description 37
- 230000003068 static effect Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000012549 training Methods 0.000 description 12
- 238000013135 deep learning Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 6
- 238000013136 deep learning model Methods 0.000 description 6
- 238000006467 substitution reaction Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 238000010606 normalization Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011478 gradient descent method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013501 data transformation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000023886 lateral inhibition Effects 0.000 description 2
- 238000007477 logistic regression Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 239000005022 packaging material Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000002087 whitening effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Biodiversity & Conservation Biology (AREA)
- Image Analysis (AREA)
Abstract
用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作的方法包括:确定当前源轴次序与当前目标轴次序之间的对齐。该方法还包括:基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序。
Description
相关申请的交叉引用
本申请要求于2017年3月28日提交且题为“TRACKING AXES DURING MODELCONVERSION(在模型转换期间跟踪轴)”的美国临时专利申请No.62/477,918的权益,其公开内容通过援引全部明确纳入于此。
背景
技术领域
本公开的某些方面一般涉及机器学习,尤其涉及改进在模型转换期间跟踪轴的系统和方法。
背景技术
可包括一群互连的人工神经元(例如,神经元模型)的人工神经网络是一种计算设备或者表示将由计算设备执行的方法。
卷积神经网络是一种前馈人工神经网络。卷积神经网络可包括神经元集合,其中每一个神经元具有感受野并且共同地拼出一输入空间。卷积神经网络(CNN)具有众多应用。具体而言,CNN已经在模式识别和分类领域中被广泛使用。
深度学习架构(诸如深度置信网络和深度卷积网络)是分层神经网络架构,其中第一层神经元的输出变成第二层神经元的输入,第二层神经元的输出变成第三层神经元的输入,依此类推。深度神经网络可被训练以识别特征阶层并且因此它们已被越来越多地用于对象识别应用。类似于卷积神经网络,这些深度学习架构中的计算可分布在处理节点群体上,其可被配置在一个或多个计算链中。这些多层架构可每次训练一层并可使用后向传播微调。
训练框架可被用于训练深度学习模型。经训练的深度学习模型可以在不同的推断引擎(诸如骁龙神经处理引擎(SNPE)库和其他框架/推断引擎,诸如Caffe、Torch或TensorFlow)上被执行。即,深度学习模型可以使用一个框架来训练,并且可以在不同的框架上被执行。在此类模型在不同的框架上被执行之前,这些模型可能经受用于从源框架到目标框架的映射操作(诸如卷积、池化或级联)的转换过程。这些操作可以接收多维输入并生成多维输出。
每个特定框架/推断引擎执行各种操作,其中按指定的轴次序(axis order)接收输入并且按固定的轴次序产生输出。指定的轴次序可能逐框架而有所不同。附加地,一框架的指定轴与其他框架相比可包括更多或更少的维度。框架之间的转换可能具有挑战性并导致计算错误。即,从一个框架到下一个框架的映射可能具有挑战性,并且在复杂模型采用轴操纵操作(诸如置换、重塑和压平)时可能会加剧。期望提供改进的映射过程(例如,转换过程)。
概述
在本公开的一个方面,公开了一种用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作的方法。该方法包括:确定当前源轴次序与当前目标轴次序之间的对齐。该方法还包括:基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序。
本公开的另一方面涉及一种设备,该设备包括用于确定当前源轴次序与当前目标轴次序之间的对齐的装置。该设备还包括:用于基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序的装置。
在本公开的另一方面,公开了一种其上记录有非瞬态程序代码的非瞬态计算机可读介质。用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作的程序代码由处理器执行,并且包括用于确定当前源轴次序与当前目标轴次序之间的对齐的程序代码。该程序代码还包括:用于基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序的程序代码。
本公开的另一方面涉及一种用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作的装置。该装置具有存储器单元以及耦合到该存储器单元的一个或多个处理器。(诸)处理器被配置成确定当前源轴次序与当前目标轴次序之间的对齐。(诸)处理器还被配置成基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序。
这已较宽泛地勾勒出本公开的特征和技术优势以便下面的详细描述可被更好地理解。本公开的附加特征和优点将在下文描述。本领域技术人员应当领会,本公开可容易地被用作修改或设计用于实施与本公开相同的目的的其他结构的基础。本领域技术人员还应认识到,这样的等效构造并不脱离所附权利要求中所阐述的本公开的教导。被认为是本公开的特性的新颖特征在其组织和操作方法两方面连同进一步的目的和优点在结合附图来考虑以下描述时将被更好地理解。然而,要清楚理解的是,提供每一幅附图均仅用于解说和描述目的,且无意作为对本公开的限定的定义。
附图简述
在结合附图理解下面阐述的详细描述时,本公开的特征、本质和优点将变得更加明显,在附图中,相同附图标记始终作相应标识。
图1解说了根据本公开的某些方面的使用片上系统(SOC)(包括通用处理器)来设计神经网络的示例实现。
图2解说了根据本公开的各方面的系统的示例实现。
图3A是解说根据本公开的各方面的神经网络的示图。
图3B是解说根据本公开的各方面的示例性深度卷积网络(DCN)的框图。
图4是解说根据本公开的各方面的可将人工智能(AI)功能模块化的示例性软件架构的框图。
图5A、5B、5C、5D和5E是解说示例性源框架到目标框架转换的示图。
图6A、6B、6C和6D是解说根据本公开的各方面的示例性源框架到目标框架转换的示图。
图7A和7B是解说根据本公开的各方面的基于轴参数的示例性转换的示图。
图8和9是解说根据本公开的各方面的用于在模型转换期间跟踪轴的方法的示例性流程图。
图10解说了根据本公开的各方面的用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作的方法。
详细描述
以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文中所描述的概念的仅有配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可以实践这些概念。在一些实例中,以框图形式示出众所周知的结构和组件以便避免湮没此类概念。
基于本教导,本领域技术人员应领会,本公开的范围旨在覆盖本公开的任何方面,不论其是与本公开的任何其他方面相独立地还是组合地实现的。例如,可以使用所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为所阐述的本公开的各个方面的补充或者与之不同的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
措辞“示例性”在本文中用于意指“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
尽管本文描述了特定方面,但这些方面的众多变体和置换落在本公开的范围之内。虽然提到了优选方面的一些益处和优点,但本公开的范围并非旨在被限定于特定益处、用途或目标。相反,本公开的各方面旨在能宽泛地应用于不同的技术、系统配置、网络和协议,其中一些作为示例在附图以及以下对优选方面的描述中解说。详细描述和附图仅仅解说本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
在模型转换期间跟踪轴
训练框架(诸如举例而言Caffe、Torch和Caffe2)被用于训练深度学习模型。经训练的深度学习模型可以在不同于训练框架的推断引擎(例如,软件库)上被执行,诸如在骁龙神经处理引擎(SNPE)库上被执行。在模型(例如,深度学习模型)在推断引擎上被执行之前,该模型经受用于从源框架到目标框架的映射操作(诸如卷积、池化或级联)的转换过程。每个特定框架/推断引擎执行预期按指定的轴次序的输入的操作并产生按固定的轴次序的输出。在每个框架中,一个或多个输入和输出可以是多维的。此外,在每个框架内,每个操作与同一框架内的其他操作相比可以接收不同的输入并产生不同的输出。框架之间的转换可能具有挑战性并导致计算错误。本公开涉及例如使用轴的对齐将轴从源框架(例如,训练框架)转换到目标框架(例如,推理引擎)的映射过程。
本公开的各方面涉及用于人工神经网络的将源框架映射到目标框架。根据本公开的各方面,源框架的输入可如下被映射到目标框架的输入。
图1解说了根据本公开的某些方面使用片上系统(SOC)100进行前述映射的示例实现,SOC 100可包括通用处理器(CPU)或多核通用处理器(CPU)102。变量(例如,神经信号和突触权重)、与计算设备相关联的系统参数(例如,带有权重的神经网络)、延迟、频率槽信息、以及任务信息可被存储在与神经处理单元(NPU)108相关联的存储器块、与CPU 102相关联的存储器块、与图形处理单元(GPU)104相关联的存储器块、与数字信号处理器(DSP)106相关联的存储器块、专用存储器块118中,或可跨多个块分布。在通用处理器102处执行的指令可从与CPU 102相关联的程序存储器加载或可从专用存储器块118加载。
SOC 100还可包括为具体功能定制的附加处理块(诸如GPU 104、DSP 106、连通性块110(其可包括第四代长期演进(4G LTE)连通性、无执照Wi-Fi连通性、USB连通性、蓝牙连通性等))以及例如可检测和识别姿势的多媒体处理器112。在一种实现中,NPU实现在CPU、DSP、和/或GPU中。SOC 100还可包括传感器处理器114、图像信号处理器(ISP)、和/或导航120(其可包括全球定位系统)。
SOC 100可基于ARM指令集。在本公开的一方面,加载到通用处理器102中的指令可包括用于确定源框架的第一轴次序与目标框架的第二轴次序之间的对齐的代码。加载到通用处理器102中的指令还可包括用于基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序的代码。
图2解说了根据本公开的某些方面的系统200的示例实现。如图2中所解说的,系统200可具有可执行本文所描述的方法的各种操作的多个局部处理单元202。每个局部处理单元202可包括局部状态存储器204和可存储神经网络的参数的局部参数存储器206。另外,局部处理单元202可具有用于存储局部模型程序的局部(神经元)模型程序(LMP)存储器208、用于存储局部学习程序的局部学习程序(LLP)存储器210、以及局部连接存储器212。此外,如图2中所解说的,每个局部处理单元202可与用于为该局部处理单元的各局部存储器提供配置的配置处理器单元214对接,并且与提供各局部处理单元202之间的路由的路由连接处理单元216对接。
深度学习架构可通过学习在每一层中以逐次更高的抽象程度来表示输入、藉此构建输入数据的有用特征表示来执行对象识别任务。以此方式,深度学习解决了常规机器学习的主要瓶颈。在深度学习出现之前,用于对象识别问题的机器学习办法可能严重依赖人类工程设计的特征,或许与浅分类器相结合。浅分类器可以是两类线性分类器,例如,其中可将特征向量分量的加权和与阈值作比较以预测输入属于哪一类别。人类工程设计的特征可以是由拥有领域专业知识的工程师针对特定问题领域定制的模版或内核。相比之下,深度学习架构可学习以表示与人类工程师可能会设计的类似的特征,但它是通过训练来学习的。此外,深度网络可以学习以表示和识别人类可能还没有考虑过的新类型的特征。
深度学习架构可以学习特征阶层。例如,如果向第一层呈递视觉数据,则第一层可学习以识别输入流中的相对简单的特征(诸如边)。在另一示例中,如果向第一层呈递听觉数据,则第一层可学习以识别特定频率中的频谱功率。取第一层的输出作为输入的第二层可以学习以识别特征组合,诸如对于视觉数据识别简单形状或对于听觉数据识别声音组合。例如,更高层可学习以表示视觉数据中的复杂形状或听觉数据中的词语。再高层可学习以识别常见视觉对象或口语短语。
深度学习架构在被应用于具有自然阶层结构的问题时可能表现特别好。例如,机动车辆的分类可受益于首先学习以识别轮子、挡风玻璃、以及其他特征。这些特征可在更高层以不同方式被组合以识别轿车、卡车和飞机。
神经网络可被设计成具有各种连通性模式。在前馈网络中,信息从较低层被传递到较高层,其中给定层中的每个神经元向更高层中的神经元进行传达。如上所述,可在前馈网络的相继层中构建阶层式表示。神经网络还可具有回流或反馈(也被称为自顶向下(top-down))连接。在回流连接中,来自给定层中的神经元的输出可被传达给相同层中的另一神经元。回流架构可有助于识别跨越不止一个按顺序递送给该神经网络的输入数据组块的模式。从给定层中的神经元到较低层中的神经元的连接被称为反馈(或自顶向下)连接。当高层级概念的识别可辅助辨别输入的特定低层级特征时,具有许多反馈连接的网络可能是有助益的。
参照图3A,神经网络的各层之间的连接可以是全连接的(302)或局部连接的(304)。在全连接网络302中,第一层中的神经元可将它的输出传达给第二层中的每个神经元,从而第二层中的每个神经元将从第一层中的每个神经元接收输入。替换地,在局部连接网络304中,第一层中的神经元可连接到第二层中有限数目的神经元。卷积网络306可以是局部连接的,并且被进一步配置成使得与针对第二层中每个神经元的输入相关联的连接强度被共享(例如,308)。更一般地,网络的局部连接层可被配置成使得一层中的每个神经元将具有相同或相似的连通性模式,但其连接强度可具有不同的值(例如,310、312、314和316)。局部连接的连通性模式可能在更高层中产生空间上相异的感受野,这是由于给定区域中的更高层神经元可接收到通过训练被调谐为到网络的总输入的受限部分的性质的输入。
局部连接的神经网络可能非常适合于其中输入的空间位置有意义的问题。例如,被设计成识别来自车载相机的视觉特征的网络300可发展具有不同性质的高层神经元,这取决于它们与图像下部关联还是与图像上部关联。例如,与图像下部相关联的神经元可学习以识别车道标记,而与图像上部相关联的神经元可学习以识别交通信号灯、交通标志等。
可以用受监督式学习来训练DCN。在训练期间,可向DCN呈递图像(诸如限速标志的经裁剪图像326),并且可随后计算“前向传递(forward pass)”以产生输出322。输出322可以是对应于特征(诸如“标志”、“60”、和“100”)的值向量。网络设计者可能希望DCN在输出特征向量中针对其中一些神经元(例如与经训练网络300的输出322中所示的“标志”和“60”对应的那些神经元)输出高得分。在训练之前,DCN产生的输出很可能是不正确的,并且由此可计算实际输出与目标输出之间的误差。DCN的权重可随后被调整以使得DCN的输出得分与目标更紧密地对齐。
为了调整权重,学习算法可为权重计算梯度向量。该梯度可指示在权重被略微调整情况下误差将增加或减少的量。在顶层处,该梯度可直接对应于连接倒数第二层中的活化神经元与输出层中的神经元的权重的值。在较低层中,该梯度可取决于权重的值以及所计算出的较高层的误差梯度。权重可随后被调整以减小误差。这种调整权重的方式可被称为“后向传播”,因为其涉及在神经网络中的“后向传递(backward pass)”。
在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。
在学习之后,DCN可被呈递新图像326并且在网络中的前向传递可产生输出322,其可被认为是该DCN的推断或预测。
深度置信网络(DBN)是包括多层隐藏节点的概率性模型。DBN可被用于提取训练数据集的阶层式表示。DBN可通过堆叠多层受限波尔兹曼机(RBM)来获得。RBM是一类可在输入集上学习概率分布的人工神经网络。由于RBM可在没有关于每个输入应该被分类到哪个类别的信息的情况下学习概率分布,因此RBM经常被用于无监督式学习中。使用混合无监督式和受监督式范式,DBN的底部RBM可按无监督方式被训练并且可以用作特征提取器,而顶部RBM可按受监督方式(在来自先前层的输入和目标类别的联合分布上)被训练并且可用作分类器。
深度卷积网络(DCN)是卷积网络的网络,其配置有附加的池化和归一化层。DCN已在许多任务上达成现有最先进的性能。DCN可使用监督式学习来训练,其中输入和输出目标两者对于许多典范是已知的并被用于通过使用梯度下降法来修改网络的权重。
DCN可以是前馈网络。另外,如上所述,从DCN的第一层中的神经元到下一更高层中的神经元群的连接跨第一层中的神经元被共享。DCN的前馈和共享连接可被利用于进行快速处理。DCN的计算负担可比例如类似大小的包括回流或反馈连接的神经网络的计算负担小得多。
卷积网络的每一层的处理可被认为是空间不变模版或基础投影。如果输入首先被分解成多个通道,诸如彩色图像的红色、绿色和蓝色通道,那么在该输入上训练的卷积网络可被认为是三维的,其具有沿着该图像的轴的两个空间维度以及捕捉颜色信息的第三维度。卷积连接的输出可被认为在后续层318和320中形成特征图,该特征图(例如,320)中的每个元素从先前层(例如,318)中一定范围的神经元以及从该多个通道中的每一个通道接收输入。特征图中的值可以用非线性(诸如矫正max(0,x))进一步处理。来自毗邻神经元的值可被进一步池化(这对应于降采样)并可提供附加的局部不变性以及维度缩减。还可通过特征图中神经元之间的侧向抑制来应用归一化,其对应于白化。
深度学习架构的性能可随着有更多被标记的数据点变为可用或随着计算能力提高而提高。现代深度神经网络用比仅仅十五年前可供典型研究者使用的计算资源多数千倍的计算资源来例行地训练。新的架构和训练范式可进一步推升深度学习的性能。经矫正的线性单元可减少被称为梯度消失的训练问题。新的训练技术可减少过度拟合(over-fitting)并因此使更大的模型能够达成更好的普遍化。封装技术可抽象出给定的感受野中的数据并进一步提升总体性能。
图3B是解说示例性深度卷积网络350的框图。深度卷积网络350可包括多个基于连通性和权重共享的不同类型的层。如图3B所示,该示例性深度卷积网络350包括多个卷积块(例如,C1和C2)。每个卷积块可配置有卷积层、归一化层(LNorm)、和池化层。卷积层可包括一个或多个卷积滤波器,其可被应用于输入数据以生成特征图。尽管仅示出了两个卷积块,但本公开不限于此,而是,根据设计偏好,任何数目的卷积块可被包括在深度卷积网络350中。归一化层可被用于对卷积滤波器的输出进行归一化。例如,归一化层可提供白化或侧向抑制。池化层可提供在空间上的降采样聚集以实现局部不变性和维度缩减。
例如,深度卷积网络的平行滤波器组可任选地基于ARM指令集被加载到SOC 100的CPU 102或GPU 104上以达成高性能和低功耗。在替换实施例中,平行滤波器组可被加载到SOC 100的DSP 106或ISP 116上。另外,DCN可访问其他可存在于SOC上的处理块,诸如专用于传感器114和导航120的处理块。
深度卷积网络350还可包括一个或多个全连接层(例如,FC1和FC2)。深度卷积网络350可进一步包括逻辑回归(LR)层。深度卷积网络350的每一层之间是要被更新的权重(未示出)。每一层的输出可以用作深度卷积网络350中后续层的输入以从第一卷积块C1处提供的输入数据(例如,图像、音频、视频、传感器数据和/或其他输入数据)学习阶层式特征表示。
图4是解说可使人工智能(AI)功能模块化的示例性软件架构400的框图。使用该架构,应用402可被设计成可使得SOC 420的各种处理块(例如CPU 422、DSP 424、GPU 426和/或NPU 428)在该应用402的运行时操作期间执行支持计算。
AI应用402可被配置成调用在用户空间404中定义的功能,例如,这些功能可提供对指示该设备当前操作位置的场景的检测和识别。例如,AI应用402可取决于识别出的场景是否为办公室、报告厅、餐馆、或室外环境(诸如湖泊)而以不同方式配置话筒和相机。AI应用402可向与在场景检测应用编程接口(API)406中定义的库相关联的经编译程序代码作出请求以提供对当前场景的估计。该请求可最终依赖于配置成基于例如视频和定位数据来提供场景估计的深度神经网络的输出。
运行时引擎408(其可以是运行时框架的经编译代码)可进一步可由AI应用402访问。例如,AI应用402可使得运行时引擎例如请求特定时间间隔的场景估计或由应用的用户接口检测到的事件触发的场景估计。在使得运行时引擎估计场景时,运行时引擎可进而发送信号给在SOC 420上运行的操作系统410(诸如Linux内核412)。操作系统410进而可使得在CPU 422、DSP 424、GPU 426、NPU 428、或其某种组合上执行计算。CPU 422可被操作系统直接访问,而其他处理块可通过驱动器(诸如用于DSP 424、GPU 426、或NPU 428的驱动器414-418)来访问。在示例性示例中,深度神经网络可被配置成在处理块的组合(诸如CPU422和GPU 426)上运行,或可在NPU 428(如果存在的话)上运行。
在一种配置中,机器学习模型被配置成用于确定源框架的第一轴次序与目标框架的第二轴次序之间的对齐。该机器学习模型还被配置成用于基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序。在一个方面,确定装置和/或设置装置可以是配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可以是被配置成执行由前述装置所述的功能的任何模块或任何装置。
根据本公开的某些方面,每个局部处理单元202可被配置成基于模型的期望的一个或多个功能特征来确定模型的参数,并且在所确定的参数被进一步适配、调谐和更新时向所期望的功能特征发展该一个或多个功能特征。
在一个示例中,Caffe框架在轴次序(N,C,H,W)下使用四维(4D)张量进行卷积,其中N是批次/图像的数目,C是通道的数目,H是空间维度(高度(H)),且W是空间维度(宽度(W))。作为对比,目标库(例如,骁龙神经处理引擎(SNPE)库)可具有三维(3D)输入张量(H,W,C),其中轴0为高度(H),轴1为宽度(W),且轴2为通道(C)。即,目标库可能不支持N。因此,在转换过程期间,N可被丢弃。本公开的各方面提供了Caffe到SNPE转换的示例。当然,本公开的各方面不限于所引用的框架,并且还构想了用于任何类型的框架之间的转换。
每个库可以根据特定的轴次序读取输入张量。例如,如以上所讨论的,在Caffe框架中,读取具有(N,C,H,W)轴次序的输入张量,其中N是批次的数目。在Torch框架中,类似于Caffe,输入张量读取为(N,C,H,W)。在TensorFlow开发库中,输入张量读取为(H,W,C)。本公开的各方面不限于前述框架,并且还构想了用于其他类型的框架。
由于维数的这种差异,当遇到具有特定轴参数的层时,转换器可以例如将Caffe轴转变到SNPE轴。在常规系统中,这些层使用轴参数来选择要处理(例如,切片、级联和Softmax)的维度。
常规模型转换使用静态映射。例如,在从Caffe框架到SNPE框架的模型转换期间,静态映射是(0--1,1-2,2-0,3-1)。即,Caffe索引0被转换成SNPE索引-1(例如,从SNPE框架丢弃),Caffe索引1被转换成SNPE索引2,Caffe索引2被转换成SNPE索引0,并且Caffe索引3被转换成SNPE索引1。对于一些操作(诸如级联、切片和Softmax),使用静态映射,以便目标框架在源框架的维度上操作。尽管如此,对于更复杂的模型,以及对于一些操作(诸如置换、重塑和压平),静态轴映射可能导致在目标框架上使用错误的维度,从而导致计算错误。附加地,对于一些操作(诸如重塑和压平),可能由于维度的变化和/或其他因素而无法导出轴映射。
源框架和目标框架两者中支持的每个操作的预期输入和输出轴次序可以是先验已知的,因为每个操作是根据特定的输入/输出轴次序实现的。例如,SNPE中的卷积操作(conv)具有已知的(例如,发布的)输入轴次序(H,W,C)和已知的输出轴次序(H,W,C)。输入轴次序是指输入到操作的张量的轴次序,而输出轴次序是指从操作输出的张量的轴次序。作为另一示例,在Caffe中,卷积操作的已知输入轴次序是(N,C,H,W),并且已知输出轴次序也是(N,C,H,W)。
图5A解说了根据本公开的各方面的利用轴映射的变换的示例。如图5A所示,源框架(例如,Caffe)的置换操作510执行(0,3,2,1)的变换操作。即,在置换操作510之后,输入的维度0是输出的第一维度502,输入的维度3是输出的第二维度504,输入的维度2是输出的第三维度506,并且输入的维度1是输出的第四维度508。
对目标框架的置换操作512的输入不同于源框架的置换操作510的输出。因此,应该对两个置换操作510、512执行转变以具有相同的输出。基于已知的静态映射,可以在目标框架(例如,SNPE)中转变(0,3,2,1)操作,使得置换操作512执行变换操作(1,0,2)。即,源框架操作在目标框架操作中被转变,使得两个置换操作510、512具有匹配的输出(例如,(W,H,C))。
从源框架到目标框架的静态映射假定功能/操作(例如,置换)的输入(例如,输入张量)将始终相同。例如,对于Caffe框架,静态映射假定功能的输入将是(N,C,H,W)。
图5B解说了根据本公开的各方面的利用轴映射的变换的另一示例。如图5B所示,对目标框架的置换操作522的输入与源框架的置换操作520的输出对齐(例如,匹配)。由于源框架的输出与目标框架的输入匹配,因此可以跳过转变。即,该转变可被认为是非操作(no-op),因为置换次序使得目标框架的输出与源框架的输出对齐,从而不需要变换。
图5C解说了应用从源框架到目标框架的变换的示例。如图5C所示,两个置换(例如,次序改变)530、532在源框架处被执行。源框架的第一置换530对输入(N,C,H,W)执行变换操作(0,2,3,1)以生成输出(N,H,W,C)。对目标框架的第一置换534的输入与源框架的第一置换530的输出(例如,H,W,C)相同。因此,如先前所讨论的,由于匹配的输入和输出,该转变是非操作(no-op)。
源框架的第二置换532对输入(N,H,W,C)执行变换操作(0,2,1,3)以生成输出(N,W,H,C)。如先前所讨论的,对于Caffe,假定输入将始终是(N,C,H,W)。在该示例中,对置换的输入是(N,H,W,C)。由于输入格式的改变,静态映射导致源框架的第二置换532的输出(例如,(N,W,H,C))与目标框架的第二置换的输出536(例如,(H,C,W))之间的不匹配。
即,源框架的第二置换532执行操作(0,2,1,3)。使用Caffe到SNPE的静态映射(例如,(0--1,1-2,2-0,3-1)),到目标框架的第二置换536的转变是(0,2,1)(例如,0映射到-1,2映射到0,1映射到2,并且3映射到1)。当目标框架的第二置换536对输入(H,W,C)执行操作(0,2,1)时,所得输出是(H,C,W),其与源框架的第二置换532的输出(例如,(N,W,H,C))不匹配。考虑从源框架中丢弃N个维度,来自目标框架的第二置换536的预期输出应该与源框架的第二置换532的输出(例如,(W,H,C))匹配。如图5C的示例所示,使用静态映射,多个操作(例如,置换)可能导致映射错误。
图5D解说了转变压平操作的示例。如图5D所示,源框架对输入(N,C,H,W)执行压平操作540。压平操作包括指示要被压平的维度的轴参数。在该示例中,源框架的压平操作540的轴参数是(2),使得第二维度(例如,维度2)和任何后续维度被压平。如图5D所示,维度2(H)和维度3(W)在源框架的输出中被压平以形成经组合维度(HxW)。源框架的其他维度(例如,维度0(N)和1(C))在源框架的输出中维持不变。
使用静态映射,用于目标框架的压平操作的轴参数542被设置为(0),使得两个压平操作540、542都以高度索引(H)开始。当压平操作的轴参数被设置为0时,维度和后续维度(例如,1和2)被组合(例如,被压平)。在该示例中,目标框架的压平操作542的输出是经组合输入(HxWxC)。如图5D所示,用于压平操作的静态映射导致源框架的输出(例如,三维输出张量(N,C,HxW))与目标框架的输出(例如,一维输出张量(HxWxC))之间的不匹配。
图5E解说了转变重塑操作的示例。如图5E所示,源框架对输入(N,CxHxW)执行重塑操作550。重塑操作可被用于改变其输入的维度,而不改变其数据。对于重塑操作,仅改变维度;在该过程中不会复制数据。重塑操作包括各种参数。0是指“复制底层的相应维度”。例如,给定维度0作为第一目标维度,如果底部具有2作为其第一维度,则顶部也将具有2作为其第一维度。-1是指“从其他维度推断该维度”。该维度被计算以保持整体元素计数与底层相同。正数是指重塑操作的输出的维度。在该示例中,源框架的重塑的参数是(0,-1,8)。如图5E所示,重塑操作550生成输出(N,CxHxW/8,8)。
使用静态映射,用于目标框架的重塑操作552的轴参数被设置为(-1,8)。在该示例中,目标框架的重塑操作552的输出是(HxWxC/8,8)。如图5E所示,用于重塑操作的静态映射导致源框架的输出(例如,三维输出张量(N,CxHxW/8,8))与目标框架的输出(例如,二维输出张量(HxWxC/8,8))之间的不匹配。
如图5A-5E的示例所示,在一些情形中,静态映射导致源框架的输出与目标框架的输出之间相匹配。尽管如此,在一些情形中,可能基于框架的显式操作而发生不匹配(例如,计算错误)。显式操作是指模型中指定的操作。本公开的各方面通过向模型添加隐式操作来缓解不匹配。隐式操作是未在模型中指定但被添加以在显式操作之前或之后对张量的轴次序重新排序的操作。在一种配置中,隐式操作对目标框架的张量的各维度重新排序,以在显式操作之前匹配源框架的张量的各维度的次序。
一些操作的轴次序是先验已知的。尽管如此,某些操作(诸如重塑或压平)将其轴次序发布为“非平凡(nontrivial)”(NT)。当通过操作对轴次序的操纵不可跟踪时,轴次序被发布为“非平凡”。即,操作的输出次序可能不是先验已知的。例如,四维(4D)输入可基于操作的参数(例如,轴参数)而变为二维(2D)输出。具体而言,不可跟踪是指其中操作可以按各种方式操纵轴以使得在该操作之后不能导出轴次序的该操作本身(诸如重塑或压平)。因此,此类操作的轴次序被发布为“非平凡”。在其他情形中,某些操作(诸如置换、级联(concat)、切片或Softmax)可以接受按任何轴次序的输入。这些操作可能导致轴次序被发布为“任何”。输入/输出轴次序基于输入/输出的维数而被发布为“任何”。例如,4D被发布为[任何,任何,任何,任何],3D被发布为[任何,任何,任何],并且2D被发布为[任何,任何]。ANY(任何)建议给定操作可接受按任何轴次序的输入。例如,输入可以是(HCW)、(WHC)或(NTNT NT)。在一个示例中,级联操作接受按任何轴次序的输入,并且其伴随轴参数指示用于执行级联的轴。
隐式操作可以是使用置换操作的收敛或发散。在一种配置中,当遇到不可跟踪的操作(例如,重塑或压平)时执行收敛。即,收敛可被执行以在不可跟踪的操作之前将目标框架的当前轴次序与源框架的当前轴次序对齐。在一种配置中,收敛经由置换操作来执行。
根据本公开的另一方面,在当前状态是不可跟踪的情况下遇到可跟踪操作(例如,卷积(conv))时,执行发散。在一种配置中,当可跟踪操作指定源框架与目标框架之间的不同预期输入轴次序时,执行发散。发散导致目标框架的轴次序从不可跟踪状态转变为可跟踪状态。在一种配置中,强制发散经由置换操作来执行。
在一种配置中,在输入轴(例如,张量)被输入到给定操作之前,可以将其轴次序与给定操作的预期输入轴次序进行比较。如果输入的轴次序与给定操作的预期输入轴次序匹配,则可不执行置换操作。即,可以跳过置换并且可以在当前输入轴次序上执行给定操作。
如以上所讨论的,一些操作可以是可跟踪的。例如,以不同于“非平凡”的次序发布其轴次序的操作可被认为是可跟踪的。其他操作可以是不可跟踪的。例如,发布非平凡轴次序的操作可被认为是不可跟踪的。可跟踪操作之后的所得状态是可跟踪/平凡的,而不可跟踪操作之后的所得状态是不可跟踪/非平凡的。在一种配置中,可跟踪操作可以输出到不可跟踪操作。例如,可跟踪操作可以输出三维轴(例如,(H,W,C)),并且不可跟踪操作可以输出非平凡(NT)输出(例如,该维度可能不是先验已知的)。例如,该场景可能例如源自执行卷积(例如,可跟踪操作),继之以重塑(例如,不可跟踪操作)。在向不可跟踪操作输入张量之前,比较来自源框架和目标框架两者的可跟踪操作的当前轴次序输出。置换操作(例如,收敛)可被执行以在不可跟踪操作之前将目标轴次序与源轴次序对齐。
在另一配置中,不可跟踪操作可以例如通过执行操作(诸如重塑操作,继之以反卷积(deconv)操作)来输出到可跟踪操作。在该配置中,源框架和目标框架两者上的deconv操作的期望输入轴次序是先验已知的。不可跟踪操作的输出可以处于非平凡状态,使得源轴次序与目标轴次序两者当前都是对齐/收敛的。例如,如果预期输入轴次序是已知的,则轴次序可被认为是平凡的。
在该示例中,源处的预期轴次序可以是(N,C,H,W),并且目标处的预期输入轴次序是(H,W,C)。在当前示例中,源处的张量的当前轴次序是[非平凡,非平凡,非平凡,非平凡]并且目标处的张量的当前轴次序是[非平凡,非平凡,非平凡]。当操作(例如,deconv)将其轴次序发布为平凡时,基于操作的预期输入轴次序(例如,(N,C,H,W)(源)和(H,W,C)(目标))来计算置换次序。可以在目标处执行发散,使得当前轴次序被变换成预期轴次序。在一种配置中,发散经由置换操作来执行。
在另一场景中,可跟踪操作可以继之以另一可跟踪操作。例如,置换可以继之以卷积。在该示例中,基于两个操作的平凡轴次序,可知晓置换输出轴次序(H,W,C)并且卷积接收轴次序(C,H,W)。在一种配置中,根据目标张量的当前轴次序和提前发布的操作的输入轴次序来计算置换次序,使得预期轴次序在第二可跟踪操作处被接收。在该示例中,置换可以是发散。
图6A解说了根据本公开的各方面的可跟踪操作的示例。如图6A所示,源框架(例如,Caffe)包括置换操作602、压平操作604和重塑操作606。目标框架包括与源框架相同的显式操作(例如,置换608、压平610和重塑612)。置换操作602、608是可跟踪操作。即,置换操作602、608的轴次序被发布,使得系统先验已知置换操作的输出的轴次序。在该示例中,目标框架的置换操作608的输出轴次序(H,W,C)与源框架的置换操作602的输出轴次序(N,H,W,C)对齐。因此,未指定强制置换(例如,收敛)且执行非操作。
附加地,在该示例中,压平操作604、610在置换操作602、608之后。即,这些操作包括可跟踪操作,继之以不可跟踪操作。由于源框架和目标框架的轴次序在不可跟踪操作(例如,压平操作604、610)之前对齐,因此不为目标框架指定收敛或发散,因为假定目标框架的压平操作610的非平凡(NT)输出将与源框架的轴次序对齐。即,因为源框架和目标框架的轴次序在压平操作604、610之前对齐,所以假定轴次序将在压平操作604、610之后对齐。因此,在该示例中,由于源框架和目标框架两者对齐,因此目标框架中的压平操作的轴参数未被操纵。
由于目标框架的压平操作610的输出是非平凡的,所以假定源框架和目标框架的轴次序在重塑操作606、612之前对齐。因为重塑操作606、612也是不可跟踪操作,所以在重塑操作612之前在目标框架处不执行强制置换。在当前示例中,假定源框架和目标框架的最终输出将是对齐的。
图6B解说了根据本公开的各方面的强制置换的示例。如图6B所示,源框架和目标框架包括以下显式操作:压平622、624,继之以重塑626、628。如先前所讨论的,压平操作是不可跟踪操作,使得输出轴次序是非平凡的。在本示例中,目标框架的轴次序(H,W,C)在压平操作622、624之前不同于源框架的轴次序(N,C,H,W)。由于在压平操作622、624之前的未对齐的轴次序,压平操作622、624的输出轴次序也可能是未对齐的。因此,在一种配置中,在目标框架的压平操作624之前在目标框架处指定强制置换630(例如,收敛)。强制置换630旨在在压平操作622、624之前对齐源框架和目标框架的轴次序。在该示例中,强制置换630将输入轴次序(H,W,C)变换为(C,H,W),以与源框架的轴次序(N,C,H,W)对齐。一旦轴次序对齐,则假定这些轴次序将在压平操作622、624之后对齐。
在当前示例中,目标框架的压平操作624的输出是非平凡的,因此假定源框架和目标框架的轴次序在重塑操作626、628之前是对齐的。因为重塑操作626、628也是不可跟踪操作,所以在重塑操作628之前在目标框架处不执行强制置换。在当前示例中,假定源框架和目标框架的最终输出将是对齐的。
图6C解说了根据本公开的各方面的强制置换的示例。如图6C所示,源框架和目标框架包括以下显式操作:压平642、632,重塑634、636和卷积638、640。如先前所讨论的,压平操作是不可跟踪操作,使得输出轴次序是非平凡的。类似于图6B的示例,在本示例中,目标框架的轴次序(H,W,C)在压平操作630、632之前不同于源框架的轴次序(N,C,H,W)。因此,在当前示例中,在目标框架的压平操作632之前在目标框架处指定强制置换644(例如,收敛)。强制置换644旨在在压平操作642、632之前对齐源框架和目标框架的轴次序。在该示例中,强制置换640将输入轴次序(H,W,C)变换为(C,H,W),以与源框架的轴次序(N,C,H,W)对齐。一旦轴次序对齐,就假定这些轴次序将在压平操作642、632之后相同。
在当前示例中,目标框架的压平操作632的输出是非平凡的。因此假定源框架和目标框架的轴次序在重塑操作634、636之前是对齐的。因为重塑操作634、636也是不可跟踪操作,所以在重塑操作636之前在目标框架处不执行强制置换。
此外,在当前示例中,在重塑634、636之后执行卷积638、640。即,在不可跟踪操作之后执行可跟踪操作。由于卷积638、640是可跟踪的,因此预期输入轴次序被发布。在该示例中,目标框架的卷积640的预期输入轴次序是(H,W,C)。然而,目标框架的重塑636的输出是非平凡的并且假定与源框架的重塑634的输出轴次序(N,C,H,W)对齐。因此,为了将目标框架的当前轴次序变换为卷积640的预期轴次序,在卷积640之前指定强制置换650(例如,发散)以将当前轴次序变换为卷积640的预期轴次序。
本公开的各方面使用张量的当前轴次序的知识并且可以省略操作,从而导致改进的处理速度。例如,在单拍多盒检测器(SSD)模型中,在从Caffe到SNPE的模型转换期间,省略了置换操作,因为SNPE的轴次序已经按照Caffe框架置换操作将产生的次序。
图6D解说了根据本公开的各方面的省略置换的示例。如图6D所示,源框架可以执行置换660,继之以第二操作662,诸如置换、压平或重塑。在当前示例中,置换660接收输入(N,C,H,W)并输出(N,H,W,C)。此外,目标框架的初始轴次序(例如,当前轴次序)(H,W,C)可能已经与源框架的置换660的输出轴次序对齐。因此,在该示例中,可以从目标框架中省略源框架的置换660,使得目标框架的初始轴次序直接输入到目标框架的第二操作664。即,在目标框架中生成经训练模型期间,省略了置换操作。
在一种配置中,轴次序的状态可被存储在张量和/或存储器设备中以供后续使用。当然,这仅是示例性的并且不是限定性的。张量的当前轴次序可以使用操作的输出轴次序来更新。可在源和目标两者上执行更新。
附加地,在一些方面,伴随轴参数可以辅助操作挑选要在其上操作的特定维度。例如,对于级联(concat)操作,轴参数指示输入的级联将在哪个轴上进行。在一个示例中,级联(concat)接收维度为(5,3,4);(5,3,8)和(5,3,10)的三个输入。此外,在该示例中,如果轴参数是(2),则级联的输出变为(5,3,22)。类似地,对于切片操作,轴参数指示输入的切片将在哪个轴上进行。例如,切片操作可以接收一个输入(10,4,9),并且当轴参数被指定为(0)时均匀地产生两个输出。也就是说,切片操作产生维度为(5,4,9)和(5,4,9)的两个输出。
作为另一示例,如果源上的四维(4D)张量的当前轴次序是(N,C,H,W)并且目标上的三维(3D)张量的当前轴次序是(H,W,C),则其中轴设为1的应用于源上的张量的级联操作可以映射到其中轴设为2的目标上的张量的级联操作。该轴是指与操作相关联的轴参数。在又一示例中,如果源上的4D张量的当前轴次序是[非平凡,非平凡,非平凡,非平凡]并且目标上的3D张量的当前轴次序是[非平凡,非平凡,非平凡],则其中轴设为1的源上的张量上的级联操作通过将源轴参数递减1来映射到其中轴设为0的目标上的张量上的级联操作。非平凡是指源和目标两者的轴次序对齐。附加地,因为目标不支持N维度,所以轴递减1。如果目标和源支持相等数目的维度,则设为1的源轴将映射到设为1的目标轴。
映射或模型转换可以离线进行,或者可以在运行时期间(例如,在线)执行。此外,在一种配置中,目标平台可以支持多个平台,诸如数字信号处理器(DSP)、图形处理单元(GPU)、中央处理单元(CPU)和其他平台。在此类系统中,可根据指定的平台在运行时动态地执行映射。在运行时期间,可以跟踪每个张量的轴,使得在调度器选择源平台上的特定操作时,该操作被评估以确定是否对轴次序执行数据变换。当提前知晓给定平台上的张量的当前轴次序和被调度操作的预期输入轴次序时,对是否执行数据变换的确定可以是可能的。
以本文描述的方式映射轴次序提供了基于转换性能而无需用户干预而对具有增加的复杂性(例如,使用重塑/压平/置换)的模型的使用。此外,本公开的各方面准许推断引擎/框架选择其具有特定轴次序的操作的实现以使用底层硬件架构而不管源框架如何。
图7A解说了基于轴参数的转换的示图700。图7A解说了在转换期间使用静态轴映射可能发生的问题的示例。如图7A所示,源框架和目标框架可包括相同的操作(例如,卷积、置换、压平、级联)。然而,常规映射技术可能无法适当地计算使用轴参数的某些操作(诸如级联)。
例如,如图7A所示,源轴次序和目标轴次序在置换操作702、704之后对齐为(H,W,C)。置换操作702、704中的每一者输出到压平操作706、708,继之以级联操作710、712。在该示例中,源框架中用于压平操作706和级联操作710的轴参数(1)不同于用于压平操作708和级联操作712的轴参数(2)。轴参数的差异导致源框架的输出(N(H*W*C))与目标框架的输出(HW(C))之间的映射错误。
图7B解说了根据本公开的各方面的基于轴参数的转换的示图750。图7B解说了缓解因常规转换引发的问题的示例。如图7B所示,源框架和目标框架分别对具有轴次序(N,C,H,W)和(H,W,C)的输入张量执行卷积操作752、754。卷积754的输出轴次序与源框架的置换756的输出轴次序对齐。此外,在置换操作756之后进行压平操作758。由于压平操作758是不可跟踪操作,因此在执行压平操作758、760之前,源轴次序应与目标轴次序对齐。由于卷积754的输出轴次序与源框架的置换756的输出轴次序对齐,因此可在目标框架处跳过置换以改进性能。
附加地,如当前示例中所示,目标框架的轴参数(与图7A的轴参数相比)被调整以对齐源框架和目标框架的输出。即,在目标框架的卷积754和源框架的置换756之后,源框架和目标框架两者的轴次序是对齐的。因此,目标框架的轴参数通过从源框架的轴参数减去1(例如,调整目标框架的轴参数)来计算,因为目标框架不支持源框架的(N)参数(例如,目标框架具有比源框架少一个轴)。源框架的压平操作758以轴=1来执行,并且目标框架的相应压平操作760以轴=0执行。同样,目标框架的后续级联操作以轴=0执行,因为源框架的相应级联操作以轴=1执行。
图8是解说根据本公开的各方面的用于在模型转换期间跟踪轴的方法800的示例性流程图。如图8的示例性示图所示,在框804,在网络启动(802)之后,获取下一操作(例如,置换、卷积、重塑、压平)和当前张量(例如,轴次序)。如果不存在进一步的操作,则已到达网络结束并且不执行进一步的动作(806)。
在框808,获取该操作的预期源轴次序。附加地,在框810,获取该操作的预期目标轴次序。对于一些操作(诸如卷积(conv)),输入/输出轴次序被发布。对于其他操作(诸如压平和重塑),输出轴次序不可跟踪。因此,输入/输出是非平凡的。然而,对于其他操作(诸如级联(concat)),输入/输出次序是任何。基于该操作、预期目标轴次序和预期源轴次序,该网络确定是否应执行当前张量(例如,当前目标轴次序)的强制置换(812)。
如果当前源和目标轴次序在操作(诸如不可跟踪操作)之前对齐,则可不执行强制置换。在另一示例中,如果当前目标轴次序与目标框架处的操作(例如,卷积操作)的预期目标轴次序对齐,则可不执行强制置换。如果不应执行强制置换,则在目标框架处执行该操作(框816)。
如果应执行强制置换,则在框814确定置换次序。作为示例,对于骁龙神经处理引擎(SNPE)框架,置换次序根据以下可能的轴次序之一来确定:六种可能的置换:(H,W,C);(C);(H,W);(W,H);(NT,NT,NT);(NT,NT)和(NT)。在一个示例中,所确定的置换次序是当前源和目标轴次序在不可跟踪操作之前的对齐(例如,收敛)。作为另一示例,所确定的置换次序是当前目标轴次序与卷积的预期轴次序的对齐(例如,发散)。
在框818,执行强制置换操作。在一种配置中,置换操作在目标框架处被执行。在执行置换之后,在目标框架处执行该操作(框816)。基于该操作,根据该操作的输出次序来更新当前目标和源轴次序(框820)。在更新当前目标和源轴次序之后,系统获取下一操作和当前轴次序(框804)。附加地,在可任选配置中,张量的轴次序可以是持久的(框822)。即,轴次序可被写入文件/数据库。
图9是解说根据本公开的各方面的用于在模型转换期间跟踪轴的方法900的示例性流程图。在框902,获取操作的目标轴次序和目标张量。附加地,在框902,获取操作的源轴次序和源张量。目标轴次序是指在目标框架中的操作的预期输入轴次序,并且源轴次序是指在源框架中的操作的预期输入轴次序。张量是该张量在被输入到操作之前的当前轴次序。在框904,系统确定张量(例如,目标张量)在被输入到该操作之前的当前轴次序(例如,当前张量)是否是可跟踪的(例如,先前操作的输出是可跟踪的)(例如,当前轴次序是可跟踪的)。
如果张量的轴次序不可跟踪,则系统确定该操作是否是可跟踪的(906)。在一些情形中,来自先前操作的输出是可跟踪的。然而,当前操作可能不是可跟踪的。例如,压平操作的输出是不可跟踪的,即使输入(例如,来自先前操作的输出)是可跟踪的(参见图6C的元素644和632)。如果操作不是可跟踪的,则不执行置换,因为当前轴次序在源和目标之间对齐(框908)。轴次序是指张量的轴次序。如果该操作的输入轴次序是可跟踪的,则计算置换次序,使得在该操作之前将当前目标轴次序与当前源轴次序对齐(框910)。
如图9所示,如果当前轴次序是可跟踪的,则系统确定该操作的输入轴次序是否是可跟踪的(912)。如果该操作的输入轴次序不是可跟踪的,则计算置换次序,以在该操作之前将当前目标轴次序与当前源轴次序对齐(框916)。如果该操作的输入轴次序是可跟踪的,则确定置换次序,以将当前目标轴次序与该操作在目标框架处的预期轴次序对齐(914)。
图10解说了用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作的方法1000。第一操作是指源框架的具体操作,并且不限于一系列操作中的第一操作。同样,第二操作是指目标框架的具体操作,并且不限于一系列操作中的第二操作。在框1002,该过程确定当前源轴次序与目标轴次序之间的对齐。在框1004,该过程基于该对齐以及第一操作的预期源轴次序和/或第二操作的预期目标轴次序来设置当前目标轴次序。
在可任选配置中,在框1006,该设置包括执行目标轴次序的强制收敛以匹配源轴次序。在一种配置中,强制收敛包括在当前目标轴次序可跟踪并且预期目标轴次序不可跟踪时在目标框架中执行置换操作。置换操作次序可以根据当前源轴次序和当前目标轴次序来确定。
在另一可任选配置中,在框1008,该设置包括执行当前目标轴次序的强制发散以与当前源轴次序不对齐。在一种配置中,强制发散包括在当前目标轴次序不可跟踪并且预期目标轴次序可跟踪时在目标框架中执行置换操作。在可任选配置中,在框1010,置换操作的次序基于源框架的第一操作的输入轴次序和目标框架的第二操作的输入轴次序来确定。
在又一可任选配置中,在框1012,该设置包括维持当前目标轴次序并跳过第二操作(例如,第二置换操作)。在一种配置中,在当前目标轴次序与当前源轴次序对齐时,跳过第二操作。根据本公开的各方面,目标框架被配置成支持多个平台,并且该设置基于所选平台在运行时被动态地执行。
在一些方面,方法700、750、800、900和1000可由SOC 100(图1)或系统200(图2)来执行。即,举例而言但不作为限定,方法700、750、800、900和1000的每个元素可由SOC 100或系统200、或者一个或多个处理器(例如,CPU 102和局部处理单元202)和/或其中所包括的其他组件来执行。
以上所描述的方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或(诸)软件组件和/或(诸)模块,包括但不限于电路、专用集成电路(ASIC)、或处理器。一般而言,在附图中有解说的操作的场合,那些操作可具有带相似编号的相应配对装置加功能组件。
如本文中所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及诸如此类。另外,“确定”可包括接收(例如接收信息)、访问(例如访问存储器中的数据)、及类似动作。此外,“确定”可包括解析、选择、选取、确立及类似动作。
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一个”旨在涵盖:a、b、c、a-b、a-c、b-c、以及a-b-c。
结合本公开所描述的各种解说性逻辑框、模块、以及电路可用设计成执行本文中所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、分立的门或晶体管逻辑、分立的硬件组件或其任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何市售的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器、或任何其他此类配置。
结合本公开所描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可驻留在本领域所知的任何形式的存储介质中。可使用的存储介质的一些示例包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动盘、CD-ROM,等等。软件模块可包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间以及跨多个存储介质分布。存储介质可被耦合到处理器以使得该处理器能该存储介质读取信息以及向该存储介质写入信息。替换地,存储介质可被整合到处理器。
本文中所公开的方法包括用于实现所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。
所描述的功能可在硬件、软件、固件或其任何组合中实现。如果以硬件实现,则示例硬件配置可包括设备中的处理系统。处理系统可以用总线架构来实现。取决于处理系统的具体应用和整体设计约束,总线可包括任何数目的互连总线和桥接器。总线可将包括处理器、机器可读介质、以及总线接口的各种电路链接在一起。总线接口可用于尤其将网络适配器等经由总线连接至处理系统。网络适配器可用于实现信号处理功能。对于某些方面,用户接口(例如,按键板、显示器、鼠标、操纵杆,等等)也可以被连接到总线。总线还可以链接各种其他电路,诸如定时源、外围设备、稳压器、功率管理电路以及类似电路,它们在本领域中是众所周知的,因此将不再进一步描述。
处理器可负责管理总线和一般处理,包括对存储在机器可读介质上的软件的执行。处理器可用一个或多个通用和/或专用处理器来实现。示例包括微处理器、微控制器、DSP处理器、以及其他能执行软件的电路系统。软件应当被宽泛地解释成意指指令、数据、或其任何组合,无论是被称作软件、固件、中间件、微代码、硬件描述语言、或其他。作为示例,机器可读介质可包括随机存取存储器(RAM)、闪存存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦式可编程只读存储器(EPROM)、电可擦式可编程只读存储器(EEPROM)、寄存器、磁盘、光盘、硬驱动器、或者任何其他合适的存储介质、或其任何组合。机器可读介质可被实施在计算机程序产品中。该计算机程序产品可包括包装材料。
在硬件实现中,机器可读介质可以是处理系统中与处理器分开的一部分。然而,如本领域技术人员将容易领会的,机器可读介质或其任何部分可在处理系统外部。作为示例,机器可读介质可包括传输线、由数据调制的载波、和/或与设备分开的计算机产品,所有这些都可由处理器通过总线接口来访问。替换地或补充地,机器可读介质或其任何部分可被集成到处理器中,诸如高速缓存和/或通用寄存器文件可能就是这种情形。虽然所讨论的各种组件可被描述为具有特定位置,诸如局部组件,但它们也可按各种方式来配置,诸如某些组件被配置成分布式计算系统的一部分。
处理系统可被配置为通用处理系统,该通用处理系统具有一个或多个提供处理器功能性的微处理器、以及提供机器可读介质中的至少一部分的外部存储器,它们都通过外部总线架构与其他支持电路系统链接在一起。替换地,该处理系统可包括一个或多个神经元形态处理器以用于实现本文中所描述的神经元模型和神经系统模型。作为另一替换方案,处理系统可以用带有集成在单块芯片中的处理器、总线接口、用户接口、支持电路系统、和至少一部分机器可读介质的专用集成电路(ASIC)来实现,或者用一个或多个现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、控制器、状态机、门控逻辑、分立硬件组件、或者任何其他合适的电路系统、或者能执行本公开通篇所描述的各种功能性的电路的任何组合来实现。取决于具体应用和加诸于整体系统上的总设计约束,本领域技术人员将认识到如何最佳地实现关于处理系统所描述的功能性。
机器可读介质可包括数个软件模块。这些软件模块包括当由处理器执行时使处理系统执行各种功能的指令。这些软件模块可包括传送模块和接收模块。每个软件模块可以驻留在单个存储设备中或者跨多个存储设备分布。作为示例,当触发事件发生时,可从硬驱动器中将软件模块加载到RAM中。在软件模块执行期间,处理器可以将一些指令加载到高速缓存中以提高访问速度。可随后将一个或多个高速缓存行加载到通用寄存器文件中以供处理器执行。在以下述及软件模块的功能性时,将理解此类功能性是在处理器执行来自该软件模块的指令时由该处理器来实现的。此外,应领会,本公开的各方面产生对处理器、计算机、机器或实现此类方面的其它系统的机能的改进。
如果以软件实现,则各功能可作为一条或多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,这些介质包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,此类计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或能用于携带或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。另外,任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或无线技术(诸如红外(IR)、无线电、以及微波)从web网站、服务器、或其他远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外、无线电、以及微波)就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘、和碟,其中盘(disk)常常磁性地再现数据,而碟(disc)用激光来光学地再现数据。因此,在一些方面,计算机可读介质可包括非瞬态计算机可读介质(例如,有形介质)。另外,对于其他方面,计算机可读介质可包括瞬态计算机可读介质(例如,信号)。以上组合应当也被包括在计算机可读介质的范围内。
由此,某些方面可包括用于执行本文中给出的操作的计算机程序产品。例如,此类计算机程序产品可包括其上存储(和/或编码)有指令的计算机可读介质,这些指令能由一个或多个处理器执行以执行本文中所描述的操作。对于某些方面,该计算机程序产品可包括包装材料。
此外,应当领会,用于执行本文中所描述的方法和技术的模块和/或其他恰适装置可由用户终端和/或基站在适用的场合下载和/或以其他方式获得。例如,此类设备能被耦合至服务器以促成用于执行本文中所描述的方法的装置的转移。替换地,本文所描述的各种方法能经由存储装置(例如,RAM、ROM、诸如压缩碟(CD)或软盘之类的物理存储介质等)来提供,以使得一旦将该存储装置耦合至或提供给用户终端和/或基站,该设备就能获得各种方法。此外,可利用适于向设备提供本文中所描述的方法和技术的任何其他合适的技术。
将理解,权利要求并不被限于以上所解说的精确配置和组件。可在以上所描述的方法和装置的布局、操作和细节上作出各种改动、更换和重塑而不会脱离权利要求的范围。
Claims (32)
1.一种用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作以用于图像处理的方法,所述方法包括:
确定当前源轴次序与当前目标轴次序是否对齐;以及
基于所述确定以及所述第一操作的预期源轴次序、所述第二操作的预期目标轴次序中的至少一者或其组合来设置所述当前目标轴次序,
其中如果确定所述当前源轴次序与所述当前目标轴次序未对齐,则设置所述当前目标轴次序进一步基于所述预期源轴次序是否可跟踪,
其中所述第一操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且所述第二操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且
其中所述当前目标轴次序包括以下维度:图像的高度、宽度、通道的数目。
2.根据权利要求1所述的方法,其中,设置所述当前目标轴次序包括:执行所述当前目标轴次序的强制收敛以匹配所述当前源轴次序。
3.根据权利要求2所述的方法,其中,执行所述强制收敛包括:在所述当前目标轴次序可跟踪且所述预期目标轴次序不可跟踪时在所述目标框架中执行置换操作,置换操作次序根据所述当前源轴次序和所述当前目标轴次序来计算。
4.根据权利要求1所述的方法,其中,设置所述当前目标轴次序包括:执行所述当前目标轴次序的强制发散以与所述当前源轴次序不对齐。
5.根据权利要求4所述的方法,其中,执行所述强制发散包括:在所述当前目标轴次序不可跟踪且所述预期目标轴次序可跟踪时在所述目标框架中执行置换操作。
6.根据权利要求5所述的方法,进一步包括:基于所述源框架的所述第一操作的源输入轴次序和所述目标框架的所述第二操作的目标输入轴次序来确定所述置换操作的次序。
7.根据权利要求1所述的方法,其中,设置所述当前目标轴次序包括:在所述当前目标轴次序与所述当前源轴次序对齐时维持所述当前目标轴次序并跳过所述第二操作。
8.根据权利要求1所述的方法,其中,所述目标框架支持多个平台,并且设置所述当前目标轴次序基于所选平台在运行时被动态地执行。
9.一种用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作以图像处理的设备,所述设备包括:
用于确定当前源轴次序与当前目标轴次序是否对齐的装置;以及
用于基于所述确定以及所述第一操作的预期源轴次序、所述第二操作的预期目标轴次序中的至少一者或其组合来设置所述当前目标轴次序的装置,
其中如果确定所述当前源轴次序与所述当前目标轴次序未对齐,则设置所述当前目标轴次序进一步基于所述预期源轴次序是否可跟踪,
其中所述第一操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且所述第二操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且
其中所述当前目标轴次序包括以下维度:图像的高度、宽度、通道的数目。
10.根据权利要求9所述的设备,其中,用于设置的装置包括:用于执行所述当前目标轴次序的强制收敛以匹配所述当前源轴次序的装置。
11.根据权利要求10所述的设备,其中,用于执行所述强制收敛的装置包括:用于在所述当前目标轴次序可跟踪且所述预期目标轴次序不可跟踪时在所述目标框架中执行置换操作的装置,置换操作次序根据所述当前源轴次序和所述当前目标轴次序来计算。
12.根据权利要求9所述的设备,其中,用于设置的装置包括:用于执行所述当前目标轴次序的强制发散以与所述当前源轴次序不对齐的装置。
13.根据权利要求12所述的设备,其中,用于执行所述强制发散的装置包括:用于在所述当前目标轴次序不可跟踪且所述预期目标轴次序可跟踪时在所述目标框架中执行置换操作的装置。
14.根据权利要求13所述的设备,进一步包括:用于基于所述源框架的所述第一操作的源输入轴次序和所述目标框架的所述第二操作的目标输入轴次序来确定所述置换操作的次序的装置。
15.根据权利要求9所述的设备,其中,用于设置的装置包括:用于在所述当前目标轴次序与所述当前源轴次序对齐时维持所述当前目标轴次序并跳过所述第二操作的装置。
16.根据权利要求9所述的设备,其中,所述目标框架支持多个平台,并且用于设置的装置基于所选平台在运行时被动态地执行。
17.一种用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作以用于图像处理的装置,所述装置包括:
存储器;以及
耦合至所述存储器的至少一个处理器,所述至少一个处理器被配置成:
确定当前源轴次序与当前目标轴次序是否对齐;以及
基于所述确定以及所述第一操作的预期源轴次序、所述第二操作的预期目标轴次序中的至少一者或其组合来设置所述当前目标轴次序,
其中如果确定所述当前源轴次序与所述当前目标轴次序未对齐,则设置所述当前目标轴次序进一步基于所述预期源轴次序是否可跟踪,
其中所述第一操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且所述第二操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且
其中所述当前目标轴次序包括以下维度:图像的高度、宽度、通道的数目。
18.根据权利要求17所述的装置,其中,所述至少一个处理器被配置成:执行所述当前目标轴次序的强制收敛以匹配所述当前源轴次序。
19.根据权利要求18所述的装置,其中,所述至少一个处理器被配置成:在所述当前目标轴次序可跟踪且所述预期目标轴次序不可跟踪时在所述目标框架中执行置换操作,置换操作次序根据所述当前源轴次序和所述当前目标轴次序来计算。
20.根据权利要求17所述的装置,其中,所述至少一个处理器被配置成:执行所述当前目标轴次序的强制发散以与所述当前源轴次序不对齐。
21.根据权利要求20所述的装置,其中,所述至少一个处理器被配置成:在所述当前目标轴次序不可跟踪且所述预期目标轴次序可跟踪时在所述目标框架中执行置换操作。
22.根据权利要求21所述的装置,其中,所述至少一个处理器被配置成:基于所述源框架的所述第一操作的源输入轴次序和所述目标框架的所述第二操作的目标输入轴次序来确定所述置换操作的次序。
23.根据权利要求17所述的装置,其中,所述至少一个处理器被配置成:在所述当前目标轴次序与所述当前源轴次序对齐时维持所述当前目标轴次序并跳过所述第二操作。
24.根据权利要求17所述的装置,其中:
所述目标框架支持多个平台,并且
所述至少一个处理器被配置成:基于所选平台在运行时动态地设置所述当前目标轴次序。
25.一种其上记录有用于人工神经网络的将源框架的第一操作映射到目标框架的第二操作以用于图像处理的程序代码的非瞬态计算机可读介质,所述程序代码由至少一个处理器执行并且包括:
用于确定当前源轴次序与当前目标轴次序是否对齐的程序代码;以及
用于基于所述确定以及所述第一操作的预期源轴次序、所述第二操作的预期目标轴次序中的至少一者或其组合来设置所述当前目标轴次序的程序代码,
其中如果确定所述当前源轴次序与所述当前目标轴次序未对齐,则设置所述当前目标轴次序进一步基于所述预期源轴次序是否可跟踪,
其中所述第一操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且所述第二操作包括置换操作、重塑操作、压平操作、卷积操作、或级联操作,并且
其中所述当前目标轴次序包括以下维度:图像的高度、宽度、通道的数目。
26.根据权利要求25所述的非瞬态计算机可读介质,其中,用于设置所述当前目标轴次序的程序代码进一步包括:用于执行所述当前目标轴次序的强制收敛以匹配所述当前源轴次序的程序代码。
27.根据权利要求26所述的非瞬态计算机可读介质,其中,用于执行所述强制收敛的程序代码包括:用于在所述当前目标轴次序可跟踪且所述预期目标轴次序不可跟踪时在所述目标框架中执行置换操作的程序代码,置换操作次序根据所述当前源轴次序和所述当前目标轴次序来计算。
28.根据权利要求25所述的非瞬态计算机可读介质,其中,用于设置所述当前目标轴次序的程序代码包括:用于执行所述当前目标轴次序的强制发散以与所述当前源轴次序不对齐的程序代码。
29.根据权利要求28所述的非瞬态计算机可读介质,其中,用于执行所述强制发散的程序代码包括:用于在所述当前目标轴次序不可跟踪且所述预期目标轴次序可跟踪时在所述目标框架中执行置换操作的程序代码。
30.根据权利要求29所述的非瞬态计算机可读介质,进一步包括:用于基于所述源框架的所述第一操作的源输入轴次序和所述目标框架的所述第二操作的目标输入轴次序来确定所述置换操作的次序的程序代码。
31.根据权利要求25所述的非瞬态计算机可读介质,其中,用于设置所述当前目标轴次序的程序代码包括:用于在所述当前目标轴次序与所述当前源轴次序对齐时维持所述当前目标轴次序并跳过所述第二操作的程序代码。
32.根据权利要求25所述的非瞬态计算机可读介质,其中,所述目标框架支持多个平台,并且用于设置所述当前目标轴次序的程序代码基于所选平台在运行时被动态地执行。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762477918P | 2017-03-28 | 2017-03-28 | |
US62/477,918 | 2017-03-28 | ||
US15/702,503 US10902312B2 (en) | 2017-03-28 | 2017-09-12 | Tracking axes during model conversion |
US15/702,503 | 2017-09-12 | ||
PCT/US2018/018797 WO2018182878A1 (en) | 2017-03-28 | 2018-02-20 | Tracking axes during model conversion |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110520835A CN110520835A (zh) | 2019-11-29 |
CN110520835B true CN110520835B (zh) | 2023-11-24 |
Family
ID=63670671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880021599.3A Active CN110520835B (zh) | 2017-03-28 | 2018-02-20 | 在模型转换期间跟踪轴 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10902312B2 (zh) |
CN (1) | CN110520835B (zh) |
TW (1) | TWI738974B (zh) |
WO (1) | WO2018182878A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019245571A1 (en) * | 2018-06-21 | 2019-12-26 | Google Llc | Automated computer operating system optimization |
CN110532291B (zh) * | 2019-07-25 | 2022-07-12 | 中国科学院计算技术研究所 | 基于最小执行代价的深度学习框架间模型转换方法及系统 |
CN110852449B (zh) * | 2019-11-25 | 2023-11-14 | 北京百度网讯科技有限公司 | 模型迁移方法和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101128762A (zh) * | 2004-02-12 | 2008-02-20 | 帕诺拉马实验室有限公司 | 用于包含偏振器区的结构化波导的系统、方法和计算机程序产品 |
CN101194437A (zh) * | 2004-08-26 | 2008-06-04 | 同流技术控股有限公司 | 波形矩阵力学方法及装置 |
WO2011063280A2 (en) * | 2009-11-20 | 2011-05-26 | Qualcomm Incorporated | Spatial alignment determination for an inertial measurement unit (imu) |
CN102394710A (zh) * | 2011-11-03 | 2012-03-28 | 南昌大学 | 基于反演模式的电波传播预测方法 |
CN103531205A (zh) * | 2013-10-09 | 2014-01-22 | 常州工学院 | 基于深层神经网络特征映射的非对称语音转换方法 |
CN104619386A (zh) * | 2012-08-29 | 2015-05-13 | 科乐美游戏公司 | 游戏机和控制计算机及其使用的计算机程序的控制方法 |
US9258550B1 (en) * | 2012-04-08 | 2016-02-09 | Sr2 Group, Llc | System and method for adaptively conformed imaging of work pieces having disparate configuration |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US20090058315A1 (en) * | 2007-08-27 | 2009-03-05 | Permalight (Asia)Co., Ltd. | Control module |
US8346819B2 (en) * | 2008-12-22 | 2013-01-01 | Sap Ag | Enhanced data conversion framework |
US9164738B2 (en) * | 2009-07-01 | 2015-10-20 | International Business Machines Corporation | Database mapping of models for reporting tools in model driven development |
US8775341B1 (en) * | 2010-10-26 | 2014-07-08 | Michael Lamport Commons | Intelligent control with hierarchical stacked neural networks |
US8799693B2 (en) * | 2011-09-20 | 2014-08-05 | Qualcomm Incorporated | Dynamic power optimization for computing devices |
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
US10515304B2 (en) * | 2015-04-28 | 2019-12-24 | Qualcomm Incorporated | Filter specificity as training criterion for neural networks |
US10489703B2 (en) | 2015-05-20 | 2019-11-26 | Nec Corporation | Memory efficiency for convolutional neural networks operating on graphics processing units |
CN108027885B (zh) | 2015-06-05 | 2022-07-01 | 渊慧科技有限公司 | 空间变换器模块 |
JP6745019B2 (ja) * | 2015-10-29 | 2020-08-26 | 株式会社Preferred Networks | 情報処理装置及び情報処理方法 |
-
2017
- 2017-09-12 US US15/702,503 patent/US10902312B2/en active Active
-
2018
- 2018-02-20 CN CN201880021599.3A patent/CN110520835B/zh active Active
- 2018-02-20 WO PCT/US2018/018797 patent/WO2018182878A1/en active Application Filing
- 2018-02-23 TW TW107106112A patent/TWI738974B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101128762A (zh) * | 2004-02-12 | 2008-02-20 | 帕诺拉马实验室有限公司 | 用于包含偏振器区的结构化波导的系统、方法和计算机程序产品 |
CN101194437A (zh) * | 2004-08-26 | 2008-06-04 | 同流技术控股有限公司 | 波形矩阵力学方法及装置 |
WO2011063280A2 (en) * | 2009-11-20 | 2011-05-26 | Qualcomm Incorporated | Spatial alignment determination for an inertial measurement unit (imu) |
CN102394710A (zh) * | 2011-11-03 | 2012-03-28 | 南昌大学 | 基于反演模式的电波传播预测方法 |
US9258550B1 (en) * | 2012-04-08 | 2016-02-09 | Sr2 Group, Llc | System and method for adaptively conformed imaging of work pieces having disparate configuration |
CN104619386A (zh) * | 2012-08-29 | 2015-05-13 | 科乐美游戏公司 | 游戏机和控制计算机及其使用的计算机程序的控制方法 |
CN103531205A (zh) * | 2013-10-09 | 2014-01-22 | 常州工学院 | 基于深层神经网络特征映射的非对称语音转换方法 |
Non-Patent Citations (3)
Title |
---|
caffe-tensorflow;ethereon;《https://github.com/ethereon/caffe-tensorflow》;20170116;全文 * |
Deep Convolutional Neural Networks for Computer-Aided Detection: CNN Architectures, Dataset Characteristics and Transfer Learning;Hoo-Chang Shin et al.;《IEEE Transactions on Medical Imaging》;20160211;第35卷(第05期);全文 * |
Fathom: reference workloads for modern deep learning methods;Robert Adolf et al.;《2016 IEEE International Symposium on Workload Characterization (IISWC)》;20161010;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110520835A (zh) | 2019-11-29 |
US10902312B2 (en) | 2021-01-26 |
TW201839676A (zh) | 2018-11-01 |
US20180285717A1 (en) | 2018-10-04 |
TWI738974B (zh) | 2021-09-11 |
WO2018182878A1 (en) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027899B (zh) | 用于提高经训练的机器学习模型的性能的方法 | |
US10510146B2 (en) | Neural network for image processing | |
CN107209873B (zh) | 用于深度卷积网络的超参数选择 | |
US10878320B2 (en) | Transfer learning in neural networks | |
CN107533669B (zh) | 滤波器特异性作为用于神经网络的训练准则 | |
CN107533754B (zh) | 在深度卷积网络中降低图像分辨率 | |
US10223635B2 (en) | Model compression and fine-tuning | |
KR102570706B1 (ko) | 분류를 위한 강제된 희소성 | |
US11238346B2 (en) | Learning a truncation rank of singular value decomposed matrices representing weight tensors in neural networks | |
CN110520835B (zh) | 在模型转换期间跟踪轴 | |
US20230076290A1 (en) | Rounding mechanisms for post-training quantization | |
US11704571B2 (en) | Learned threshold pruning for deep neural networks | |
WO2021247944A1 (en) | Federated mixture models | |
US20240232585A1 (en) | Channel-guided nested loop transformation and scalar replacement | |
CN117203643A (zh) | 等变可调向卷积神经网络 | |
WO2024102526A1 (en) | Realistic distraction and pseudo-labeling regularization for optical flow estimation | |
EP4233048A1 (en) | Sub-spectral normalization for neural audio data processing |
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 |