CN110537193A - 卷积神经网络的快速计算 - Google Patents

卷积神经网络的快速计算 Download PDF

Info

Publication number
CN110537193A
CN110537193A CN201880017855.1A CN201880017855A CN110537193A CN 110537193 A CN110537193 A CN 110537193A CN 201880017855 A CN201880017855 A CN 201880017855A CN 110537193 A CN110537193 A CN 110537193A
Authority
CN
China
Prior art keywords
housebroken
convolutional
neural networks
input data
output
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.)
Pending
Application number
CN201880017855.1A
Other languages
English (en)
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110537193A publication Critical patent/CN110537193A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local 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/443Local 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/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Human Computer Interaction (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)

Abstract

一种计算机实现的方法包括:获得包括一个或多个卷积层的经训练的卷积神经网络,所述一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;基于经训练的卷积神经网络的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子;接收经训练的卷积神经网络的输入数据;基于预先计算的可重用因子和输入数据,使用Winograd卷积运算符来计算一个或多个卷积层各自的输出;以及基于一个或多个卷积层各自的输出来确定经训练的卷积网络的输出数据。

Description

卷积神经网络的快速计算
背景技术
卷积神经网络(CNN或ConvNet)是机器学习中的一种人工神经网络。它通常被用于分析视觉图像,例如,图像识别和分类。例如,在机器学习过程的训练阶段,CNN可以基于训练数据来训练或学习。然后,在机器学习过程的预测阶段,经训练的CNN用作接收输入数据并基于对输入数据进行处理和分析而输出预测或决定的模型。
发明内容
本公开描述了卷积神经网络(CNN)的快速计算。
在一种实施方式中,一种计算机实现的方法包括:获得包括一个或多个卷积层的经训练的卷积神经网络,一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;基于经训练的卷积神经网络的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子;接收经训练的卷积神经网络的输入数据;基于预先计算的可重用因子和输入数据,使用Winograd卷积运算符来计算一个或多个卷积层各自的输出;以及基于一个或多个卷积层各自的输出确定经训练的卷积网络的输出数据。
先前描述的实施方式可使用以下实现:计算机实现的方法;存储计算机可读指令以执行计算机实现的方法的非暂时性计算机可读介质;以及计算机实现的系统,包括与硬件处理器互操作地耦接的计算机存储器,该硬件处理器被配置为执行计算机实现的方法/存储在非暂时性计算机可读介质上的指令。
本文中描述的主题可以在特定实施方式中实现,以便实现以下优点中的一个或多个。第一,所描述的主题通过对计算图执行等效变换或转换以简化CNN的网络结构,从而允许以设备无关和设备相关的方式优化CNN的实现,来提升CNN模型。示例性设备无关的优化可以包括:冗余运算移除(例如,在深度学习框架中移除识别运算符,其仅执行从输入张量到输出张量的数据传输而不改变数据内容);以及层/运算合并以减少计算复杂性(例如,将卷积层与批量归一化层合并)。示例性设备相关的优化可以包括:通过合并运算(例如,将卷积层与紧接在前者之后的偏置添加运算合并)来提高硬件效率,以更好地利用硬件计算能力和对不同底层架构的灵活部署运算以最大化CNN吞吐量。第二,所描述的主题基于经训练的CNN减少了数据预测的计算量并且提高了预测速度,从而减少了网络等待时间并提高了CNN吞吐量。第三,所描述的主题需要较少的计算能力。第四,所描述的主题可以将多个运算符组合成新运算符以利用底层硬件加速器(诸如GPU、FPGA或ASIC芯片)。例如,在CNN中,卷积层之后通常是偏置添加运算或批量归一化层。在偏置添加运算的情况下,如果将卷积和偏置添加视为两个单独的运算,则卷积可以在GPU上计算,然后偏置值可以被添加到GPU上的先前卷积的结果。以这种方式,GPU的计算能力因偏置添加运算中的少量计算而未被充分利用。相反,在所描述的主题中,在一些实施方式中,卷积和偏置添加运算可以组合成单个运算。在此单个运算中,相应的偏置值可以在相同的GPU核启动中直接被添加到卷积的结果,从而导致更优的速度。类似地,在批量归一化的情况下,卷积层和批量归一化的组合可以被等效地离线转换为卷积层和偏置添加组合,然后上述设备相关的优化可以应用于卷积层和偏置添加运算以进一步利用GPU能力以提高计算速度。这些示例也可应用于GPU之外的其他处理器和加速器。其他优点对于本领域的普通技术人员将是显而易见的。
本文的主题的一个或多个实施方式的细节在具体实施方式、权利要求书、附图和权利要求书中阐述。通过具体实施方式、权利要求书和附图,该主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是示出根据本公开的实施方式的卷积神经网络(CNN)的两个计算图的示例性等效变换的框图。
图2是示出根据本公开的实施方式的快速计算CNN的示例性伪随机码的屏幕截图。
图3是示出根据本公开的实施方式的快速计算CNN的示例性方法的流程图。
图4是示出根据本公开的实施方式的示例性计算机系统的框图,该示例性计算机系统被用于提供与本公开中描述的算法、方法、函数、过程、流程和程序相关联的计算功能。
在不同的附图中相同的附图标记和名称表示相同的元件。
具体实施方式
以下详细描述了卷积神经网络(CNN)的快速计算,并且给出的描述使得本领域技术人员能够在一个或多个特定实施方式的背景中做出和使用所公开的主题。可以对所公开的实施方式进行对于本领域的普通技术人员来说显而易见的各种修改、更改和置换,并且在不脱离本公开的范围的情况下,所定义的一般原理可以应用于其他实施方式和应用。在一些情况下,可以省略对理解所描述的主题不必要的细节,以便一个或多个所描述的实施方式不被不必要的细节模糊,并且因为这些细节在本领域普通技术人员的技术范围内。本公开不旨在限于所描述或示出的实施方式,而是按照与所描述的原理和特征相一致的最宽范围。
卷积神经网络(CNN或ConvNet)是用于深度学习的最具代表性的网络结构和技术创新之一。它在图像领域取得了巨大成功,并且也被广泛用于解决其他领域的问题。CNN可以包括输入层、卷积层、激活函数、批量归一化、池化层(pooling layer)、全连接层和输出层中的一个或多个。在它们之中,卷积层通常涉及的计算量最大并且可消耗整个CNN的最长计算时间。卷积层可以包括一个或多个滤波器(也称为核)。卷积层可以接收输入数据,利用卷积层的一个或多个滤波器中的每一个滤波器对输入数据执行卷积运算,并生成卷积层的输出数据。在一些情况下,CNN可以包括数十个卷积层。
所描述的技术可以帮助加快卷积运算,这是卷积层的核心运算。相应地,所描述的技术可以提高计算效率并减少CNN的计算量。
所描述的技术可具有各种应用。例如,所描述的技术可以应用于诸如无人超市、无人银行、安全保护和智能城市的领域中的面部识别。例如,深度卷积神经网络已被用于面部识别。所描述的技术可以帮助处理面部识别的任务,尤其是在大量人群中。所描述的技术可以基于经训练的CNN模型改善面部识别的响应时间。所描述的技术可以减少对面部识别的每个请求的处理时间。相应地,可以增加系统吞吐量并且可以减少运算成本,而不增加计算资源。
作为另一示例,所描述的技术可以被用于机动车保险。所描述的技术可以基于深度卷积神经网络图像技术自动识别车辆的表面损坏。例如,在汽车事故之后,可以拍摄汽车表面损坏,然后将其上传到保险公司的理赔服务器,该理赔服务器可以执行自动损坏识别和补偿额评估。所描述的技术可以被保险理赔服务器用来基于深度卷积神经网络技术执行自动损坏识别。所描述的技术可以允许保险公司在不增加设备预算的情况下提供更快和更高的吞吐量。
除了上面讨论的示例之外,所描述的技术可以使利用CNN技术的许多其他应用受益。
在一些实施方式中,所描述的技术可以使用计算图来实现。计算图可被用于表示机器学习算法,尤其是在深度学习的领域中。计算图可以是包括多个节点的有向图,其中节点对应于运算或变量。变量可以将其值馈送给运算,运算可以将其输出馈送给其他运算。这样,计算图中的节点可以定义变量的函数。馈送至节点(即,输入)并从节点出来(即,输出)的值可以由张量(tensor)表示。张量可以被视为多维阵列。张量可以包含更高阶数或维度的标量、向量、矩阵和张量。使用张量来表示变量和运算符的输入和输出数据可以帮助实现自动区分、动态内存管理和其他功能。
对于运算符,计算图仅需要定义运算符的函数。无需指定每个运算符的具体实施方式。因此,计算图提供了灵活性,使得运算符可以在CPU或者诸如GPU、FPGA或AI芯片的硬件加速器中的一个或多个上执行或以其他方式实施。对数据变量的存储和访问可以是本地的或者远程的。计算图可被用于机器学习过程的模型训练、模型预测或推理、或其他阶段。
图1是示出根据本公开的实施方式的CNN的两个计算图100和105的示例性等效变换101的框图。两个计算图100和105可以表示相同的CNN。为简单起见,两个计算图100和105示出CNN的单个卷积层的运算或函数。CNN可以包括多个层,并且可以相应地由计算图表示。
如图所示,张量X110和张量Z170分别是由计算图100表示的CNN的卷积层的输入和输出。计算图100包括两个节点130和150。每个节点对应于变量或运算符,其可以被视为神经网络的细粒度基本运算。节点130表示卷积运算符Conv2D。Conv2D 130可以表示输入数据张量X110与张量W120的卷积运算,其中张量W120表示CNN的卷积层的滤波器的权重或参数。在卷积运算之后,Conv2D 130可以输出张量Y140。输出的张量Y140和偏置160可以用作节点150的输入,其表示将偏置160添加到输出数据Y140的运算,得到CNN的卷积层的输出Z170。
类似地,张量X'115和张量Z'175分别是由计算图155表示的CNN的卷积层的输入和输出。计算图155包括两个节点135和155。节点135表示卷积运算符Wino-Conv2D。Wino-Conv2D 135可以表示输入数据张量X'115与张量W125的修改的卷积运算,其中张量W125表示CNN的卷积层的滤波器的修改的权重或参数。在卷积运算之后,Wino-Conv2D 135可以输出张量Y'145。输出的张量Y'145和偏置165可以用作节点155的输入,其表示将偏置165添加到输出数据Y'145的运算,得到CNN的卷积层的输出Z'175。
在一些实施方式中,计算图105是计算图100的等效变换。在相同的输入(即,X 110=X'115)的情况下,两个计算图100和105可以生成相同的输出(即,Z 170=Z'175)。
在一些实施方式中,与计算图100相比,计算图105可以表示用于快速计算CNN的改进或优化的卷积运算。例如,在机器学习过程的训练阶段之后,已经训练并且已经知道计算图的节点的参数(例如,张量W120或张量U125中的滤波器或核参数的值)。在机器学习过程的预测阶段,这些参数的值保持不变。换句话说,无论输入张量X'115如何变化,张量U125的值都不会改变。这样,可在训练之后,在执行基于任何输入数据X'115的预测之前,计算张量U125。通过预先计算张量U125并且针对任何输入数据X'115将预先计算的张量U125重新用于CNN的卷积层,可以减少CNN的计算量,尤其是对于CNN的多个输入的预测。
这样,在计算图105中,新卷积运算符Wino-Conv2D 135可以替换原计算图100中的原卷积运算符Conv2D 130。新卷积运算符Wino-Conv2D 135使用张量U125而不是原张量W120作为滤波器或核参数。计算图105可以在保持与原计算图100的等效性的同时实现改进的计算效率。
图2是示出根据本公开的实施方式的用于快速计算CNN的示例性算法200的示例性伪代码的屏幕截图。示例性算法200基于Winograd最小滤波算法,是一种CNN的快速算法。
CNN的卷积层的卷积运算可以被定义为卷积层的输入(例如,由输入张量X表示)与卷积层的滤波器或核(由滤波器或核张量W表示)之间的特定相关性,得到输出(例如,由输出张量Y表示)。为简单起见,考虑卷积运算使用步长1。对于给定的卷积层,输入张量X可以具有[N;Cin;H;Wi]的大小,其中N表示要处理的输入数据的批量大小(例如,要进行卷积的N个图像的批量运算);Cin表示通道的数量(例如,来自标准数码相机的图像具有三个通道-红色、绿色和蓝色。每个通道可以包括具有像素值(例如,在0到255的范围内)的2d矩阵);H和Wi分别代表每个通道的高度和宽度(例如,255*255)。滤波器或核张量W可以具有[Cout;Cin;R;S]的大小,其中,Cout表示卷积运算的输出通道的数量;Cin表示卷积运算的输入通道的数量;R和S分别表示卷积层的每个滤波器或核的高度和宽度。通常,R和S可以设置为具有相同的值。
输出张量Y可以具有[N;Cout;H;Wi]的大小,具有元素
其中,i是范围[0,N)内的整数,o是范围[0,Cout)内的整数。
实现卷积层的卷积运算有几种方法,例如按定义计算(例如,如等式(1)所给出的)、转换为矩阵乘法,或使用Winograd快速算法。例如,当每个卷积核或滤波器的大小是1×1(即,R和S同时等于1)时,上述卷积运算可以转换为矩阵乘法。在一些实施方式中,例如,在R>1或S>1的情况下,可基于Winograd快速算法实现卷积运算。
根据Winograd快速算法,对于输入通道与卷积滤波器或核的卷积(大小为r×s且输出大小为m×n),可发现最小滤波算法F(m×n;r×s)只需要(m+r-1)(n+s-1)次乘法来完成卷积运算。例如,大小为H×Wi的给定输入通道可以被划分为重叠的子块,每个子块具有m×n的大小。可对每个子块分别执行卷积计算以生成相应的输出通道(回想上文步长为1的假设)。如上所述,卷积层中的卷积滤波器或核的宽度R和高度S通常被设置为相同的值。通常,对于子块划分,m和n也被设置为相同的值。
为简单起见,示例性算法200考虑m=n且r=s的情况。也就是说,考虑最小滤波算法F(mm;rr)。示例性算法200的步骤1-23示出了用于CNN的单个卷积层的卷积运算的Winograd算法的示例性实施方式。CNN的特征在于ωo,c∈Rr×r,滤波器或核处于第c个输入通道和第o个输出通道之间,以及张量W包括CNN的滤波器或核的参数或权重。张量X表示CNN的输入数据。表示输入通道的数量。α=m+r-1表示输入子块的大小(相邻子块具有r-1个重叠元素)。xc,p∈Rα×α表示第c个输入通道的第p个子块。Yo,p∈Rα×α表示第o个输出通道的第p个子块。BT和AT是与输入X对应的变换矩阵,由下式给出:
以及
在基于Winograd算法计算CNN的现有技术中,针对CNN的每个卷积层的每个输入通道(例如,图像的通道)执行示例性算法200(包括步骤1-23)。例如,如果CNN包括5个卷积层,则对于每个输入通道,示例性算法200被执行5次。如果输入10个通道用以预测,则示例性算法200将被执行50次。
与现有技术不同,所描述的用于快速计算CNN的技术可以减少计算量,尤其是多个输入通道的情况下。所描述的用于快速计算CNN的技术可以重用在机器学习过程的预测阶段期间通用且不变的因子。所描述的用于快速计算CNN的技术识别这些因子并预先计算它们。
因此,无论输入数据的值如何,那些可重用因子的计算仅需要被计算一次。更具体地,在示例性算法200中,所描述的快速计算算法可以根据步骤1-6预先计算张量U,因为这种计算所需的所有参数(例如,W和ωo,c)在给定经训练的CNN的情况下是已知的,并且在基于经训练的CNN的预测阶段期间保持不变。例如,可通过离线处理从张量W中提取张量U。因此,示例性算法200的步骤1-6(统称为210)仅需要对经训练的CNN的每个卷积层执行一次。例如,如果输入10个通道用于预测,则示例性算法200的步骤1-6可仅执行一次以减少实时模型预测中的计算量,从而减少运行时间,而针对经训练的CNN的每个卷积层,其余步骤7-23(统称为220)执行10次。
利用基于示例性Winograd算法200预先计算的张量U,例如,根据等效变换101可以将经训练的CNN的计算图修改为计算图105,如图1所示。例如,基于示例性Winograd算法200预先计算的张量U可以是张量U125的示例,其替换经训练的CNN的原权重张量W120。卷积运算符Wino-Conv2D 135可以基于示例性Winograd算法200的步骤7-23来实现,其替换原计算图100中的原卷积运算符Conv2D 130。修改的计算图105可以被用于预测。由于新计算图105接替原计算图100从计算张量U125开始,因此减少了修改的计算图105的计算量,从而提高了用于执行CNN的卷积运算的计算效率。仿真结果表明,与具有原权重张量W120和卷积运算符Conv2D 130的计算图100相比,基于具有预先计算的U125和卷积运算符Wino-Conv2D 135的修改后的计算图105的计算可以将计算速度提高多达30%。
注意,图2示出了对于m=n且r=s的情况的示例性Winograd算法。所描述的用于快速计算CNN的技术可以被调整并应用于包括通用CNN的其他情况,而无需m=n且r=s的特定要求。
图3是根据实施方式的用于快速计算CNN的示例性方法300的流程图。在一些实施方式中,方法300的各个步骤可以并行、组合、循环或以任何顺序运行。为了清楚地呈现,以下描述在本说明书中的其他附图的背景下一般地描述了方法300。然而,应当理解,方法300可以例如通过任何合适的系统、环境、软件和硬件、或者系统、环境、软件和硬件的组合来适当地执行。例如,方法300可以由数据处理装置执行,该数据处理装置被配置为使用CNN执行机器学习算法。例如,数据处理装置可以包括通用CPU或诸如GPU、FPGA、甚至定制ASIC处理器的硬件加速器中的一个或多个,或由通用CPU或诸如GPU、FPGA、甚至定制ASIC处理器的硬件加速器中的一个或多个实现。
在310处,获得经训练的CNN。获得经训练的CNN可以包括:例如,通过机器学习过程的训练阶段或过程(例如,基于训练数据或样本输入)计算经训练的CNN,从存储器或另一数据存储设备检索经训练的CNN,或者从另一个源(例如,执行训练过程的另一数据处理装置)接收经训练的CNN。经训练的CNN可以接收和分析输入数据(例如,输入图像),并预测输出数据(例如,输入图像的类别或分类的相应概率)。
经训练的CNN具有已知的网络架构(例如,不同层的有序序列),其由经训练的CNN中的每个层的已知参数定义。经训练的CNN中的每个层可以对经训练的CNN的输入数据执行运算(或直接地执行运算,或通过对经训练的CNN中的前一层的输出执行运算)。经训练的CNN中在另一层之前对数据执行运算的层,被称为相对于另一层的先前层、前一层或上游层。经训练的CNN中在另一层对数据执行运算之后或接着另一层对数据执行运算的层,被称为相对于另一层的后一层或下游层。通常,先前层的输出被用作相邻后一层的输入。这样,经训练的CNN的输入数据以从CNN的开头(例如,接收输入数据的输入层或直接对输入数据执行运算的初始层)起到CNN的结尾(例如,输出CNN的结果的输出层)的顺序经过经训练的CNN的每个层。
具体地,经训练的CNN包括一个或多个卷积层。一个或多个卷积层各自包括相应的具有已知滤波器参数(例如,滤波器的数量、滤波器大小、滤波器的参数值和连接权重)的一个或多个滤波器(或核)。不同的卷积层可以包括相同或不同数量的滤波器。每个滤波器由已知的滤波器参数或权重定义。在一些实施方式中,滤波器可以由矩阵表示,诸如滤波器ωo,c∈Rr×r,如关于图2所描述的。滤波器矩阵和连接权重的值在训练过程期间被学习并得知,当使用经训练的CNN例如进行基于输入数据的预测时这些值不会改变。在一些实施方式中,卷积层的滤波器和/或连接权重可以统一由张量表示。例如,经训练的CNN的每个卷积层可以由滤波器矩阵和权重张量(例如,关于图2描述的张量W)表示,其包括CNN的滤波器或核的参数或权重。方法300从310进行到320。
在320处,可基于经训练的CNN的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子。例如,对于一个或多个卷积层中的每一个卷积层,可以独立于CNN的任何输入数据来识别和计算仅依赖于已知的不变的参数的可重用因子。例如,如关于图2中的示例性算法200所描述的,张量U是经训练的CNN的一个或多个卷积层各自的可重用因子的示例。张量U可以根据示例性算法200的步骤1-6来计算,因为这个计算所需的所有参数(例如,W和ωo,c)在给定经训练的CNN的情况下是已知的并且在基于经训练的CNN的预测阶段期间保持不变。
在一些实施方式中,基于经训练的CNN的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子,包括:基于经训练的CNN的已知滤波器参数,离线计算一个或多个卷积层各自的可重用因子,而不管经训练的CNN的输入数据如何。结果,对于经训练的CNN的每个卷积层,可重用因子仅需要例如通过离线处理被计算一次,并且可以在运行时计算期间被取回和重用。方法300从320进行到330。
在330处,一个或多个卷积层各自的预先计算的可重用因子可以被保存在例如数据存储设备中,以便在以后使用经训练的CNN进行例如预测时被取回。在一些实施方式中,可以共享、发布保存的预先计算的可重用因子或以其他方式将保存的预先计算的可重用因子发送到其他数据处理设备。方法300从330进行到340。
在340处,确定是否接收到经训练的CNN的输入数据。响应于确定接收到经训练的CNN的输入数据,方法300进行到350。否则,如果确定没有接收到经训练的CNN的输入数据,则方法300进行到380,方法300在此处停止。
输入数据可以包括例如一个或多个图像(例如,包括人的面部的照片)的图像数据或其他类型的输入数据。每个图像可以包括一个或多个通道。例如,来自标准数码相机的图像可被视为具有三个通道-红色、绿色和蓝色。另一方面,灰度图像可以被视为具有单个通道。
在一些实施方式中,输入数据可以由张量表示,该张量可以包括标量、向量、矩阵和高维张量。作为示例,灰度图像可以由像素值的2d矩阵表示。矩阵中每个像素的值可以在例如0到255的范围内,零表示黑色,255表示白色。在一些实施方式中,每个像素的值通过将其除以255来归一化。彩色图像的每个通道可以包括像素值例如在0到255的范围内或归一化后在0到1.0的范围内的2d矩阵。彼此堆叠的多个2d矩阵(每种颜色一个)可以形成表示彩色图像的张量。在一些实施方式中,图像数据可以包括包含多个图像的张量。
例如,如关于图2中的示例性算法200所描述的输入张量X是输入数据的示例。输入数据可以被分成子块或通道,例如,根据如关于示例性算法200所描述的技术。例如,可以根据Winograd算法或其他方法,对数据的每个子块或通道执行卷积运算。
在一些实施方式中,CNN的输入数据可以根据经训练的CNN的已知网络架构经过经训练的CNN的每个层。方法300从340进行到350。
在350处,基于预先计算的可重用因子和输入数据计算一个或多个卷积层各自(例如,层k)的输出。层k的输出包括在层k的输入与层k的滤波器之间执行的卷积运算的结果。层k的输入可以包括经训练的CNN的输入数据、经训练的CNN中的前一层(例如,层k-1)的输出、或它们的组合。在一些实施方式中,可基于预先计算的可重用因子(例如,张量U125)和输入数据,使用Winograd卷积运算符(例如,如关于图1所描述的Wino-Conv2D 135)(直接或间接地通过对前一层的输出执行运算)来计算层k的输出。在一些实施方式中,层k的输出可以根据Winograd最小滤波算法(例如,关于图2描述的示例性算法200)来计算。方法300从350进行到360。
在360处,基于一个或多个卷积层各自的输出来确定经训练的卷积网络的输出数据。在一些实施方式中,确定经训练的卷积网络的输出数据包括:生成、预测或以其他方式计算经训练的CNN的输出数据。输出数据可以包括预测、分类或通过经训练的CNN的运算从输入数据导出的其他特征或属性。例如,输出数据可以包括输入图像的可能类别(例如,人、狗、汽车或树)的概率向量。作为另一示例,输出数据可包括输入图像中的对象的标识(例如,用于面部识别)。作为又一示例,输出数据可以包括基于车辆的输入照片对车辆损坏的识别或分类。在一些实施方式中,输出数据可以包括输入数据的增强或过滤版本(例如,输入照片的锐化或模糊版)。
在一些实施方式中,经训练的卷积网络的输出数据是基于一个或多个卷积层各自的输出来确定的,因为经训练的卷积网络的输出数据是基于一个或多个卷积层各自的一个或多个输出(例如,层k的输出,k∈[1,L],其中L是经训练的CNN中的层的总数)来确定的。通常,经训练的卷积网络的输出数据是基于经训练的CNN的最后一层即层L的输出来确定的,其中层L的输出是基于前一层即层L-1的输出确定的,等等,直到追溯到经训练的CNN的输入数据为止。在一些实施方式中,可基于一个或多个卷积层各自的输出以另一种方式确定经训练的卷积网络的输出数据。方法300从360进行到370。
在370处,例如,可经由用户界面(例如,图形用户界面)输出经训练的卷积网络的输出数据。例如,经训练的卷积网络的输出数据可以用表格、图形、文本或其他格式表示,并通过屏幕或其他用户界面显示给用户。在一些实施方式中,经训练的卷积网络的输出数据可以被保存、传输或以其他方式输出到另一设备(例如,存储设备或另一个数据处理装置以进行进一步处理)。
方法300从370返回到340以确定是否接收到经训练的CNN的任何输入数据(例如,称为第二输入数据)。在一些实施方式中,经训练的CNN的第二输入数据可以包括经训练的CNN的附加或更新的输入数据(例如,另一组图像)以用于分析和预测。因此,方法300可以进行到350,以基于预先计算的可重用因子和第二输入数据来计算一个或多个卷积层各自的第二输出;然后到360,以基于一个或多个卷积层各自的第二输出来确定经训练的卷积网络的第二输出数据。
图4是根据实施方式的用于提供与如本公开中所描述的算法、方法、函数、过程、流程和程序相关联的计算功能的示例性计算机系统400的框图。图示的计算机402旨在包含任何计算设备,例如服务器、台式计算机、膝上型/笔记本计算机、无线数据端口、智能电话、个人数字助理(PDA)、平板计算设备、这些设备内的一个或多个处理器、或者任何其他合适的处理设备,包括计算设备的物理或虚拟实例(或两者)。另外,计算机402可以包括包含输入设备和输出设备的计算机,该输入设备例如为小键盘、键盘、触摸屏或可以接受用户信息的其他设备,该输出设备传送与计算机402的操作相关的信息,包括数字数据、视觉或音频信息(或信息的组合),或图形类型的用户界面(UI)(或GUI)。
计算机402可以充当客户端、网络组件、服务器、数据库或其他持久性设备或者用于执行本公开描述的主题的计算机系统的任何其他组件的角色(或角色的组合)。图示的计算机402可通信地与网络430耦接。在一些实施方式中,计算机402的一个或多个组件可以被配置为在包括基于云计算环境、本地环境、全局环境或其他环境(或环境的组合)的环境内操作。
在高级别,计算机402是可操作为接收、发送、处理、存储或管理与所描述的主题相关联的数据和信息的电子计算设备。根据一些实施方式,计算机402还可以包括应用服务器、电子邮件服务器、网络服务器、高速缓存服务器、流数据服务器或其他服务器(或服务器的组合),或者可通信地与应用服务器、电子邮件服务器、网络服务器、高速缓存服务器、流数据服务器或其他服务器(或服务器的组合)耦接。
计算机402可以通过网络430从客户端应用(例如,在另一计算机402上执行)接收请求,并通过使用适当的软件应用处理所接收的请求来响应所接收的请求。此外,还可以将请求从内部用户(例如,从命令控制台或通过其他适当的访问方法)、外部或第三方、其他自动化应用以及任何其他适当的实体、个人、系统或计算机发送至计算机402。
计算机402的每个组件可以使用系统总线403通信。在一些实施方式中,计算机402的任何或所有组件、硬件或软件(或者硬件和软件两者的组合)可以使用应用程序接口(API)412或服务层413(或API 412和服务层413的组合)通过系统总线403彼此进行接口连接或者与接口404进行接口连接(或两者的组合)。API 412可以包括例程、数据结构和对象类的规范。API 412可以是独立于计算机语言或取决于计算机语言的,并且指代完整的接口、单个函数或甚至一组API。服务层413向计算机402或可通信地耦接至计算机402的其他组件(无论是否示出)提供软件服务。计算机402的功能对于使用此服务层的所有服务消费者可以是可访问的。诸如由服务层413提供的软件服务通过定义接口提供可重用定义功能。例如,接口可以是用JAVA、C++或其他合适的语言编写的软件,以可扩展标记语言(XML)格式或其他合适的格式提供数据。虽然API 412或服务层413被示为计算机402的集成组件,但是可选实施方式可以将API 412或服务层413示为与计算机402的其他组件或可通信地耦接至计算机402的其他组件(无论是否示出)相关的独立组件。此外,在不脱离本公开的范围的情况下,API 412或服务层413的任何或所有部分可以实现为另一软件模块、企业应用或硬件模块的子模块(child or sub-modules)。
计算机402包括接口404。尽管在图4中示出为单个接口404,但是根据计算机402的特定需要、期望或特定实施方式,可以使用两个或更多个接口404。接口404被计算机402用来在分布式环境中与连接到网络430的其他系统通信(无论是否示出)。通常,接口404包括编码在软件或硬件(或软件和硬件的组合)中的逻辑,并且可操作为与网络430通信。更具体地,接口404可包括支持与通信相关联的一个或多个通信协议的软件,使得网络430或接口的硬件可操作为在所示计算机402的内部和外部传送物理信号。
计算机402包括处理器405。尽管在图4中示出为单个处理器405,但是根据计算机402的特定需要、期望或特定实施方式,可以使用两个或更多个处理器。通常,处理器405执行指令并操纵数据以执行计算机402的操作和任何算法、方法、函数、过程、流程和程序,如在本公开中描述的。
计算机402还包括数据库406,数据库406可以保存计算机402或可以连接到网络430的其他组件(无论是否示出)(或两者的组合)的数据。例如,数据库406可以是存储与本公开一致的数据的内存数据库、传统数据库或其他类型的数据库。在一些实施方式中,根据计算机402的特定需要、期望或特定实施方式以及所描述的功能,数据库406可以是两种或更多种不同数据库类型(例如,混合内存和传统数据库)的组合。尽管在图4中示出为单个数据库406,但是根据计算机402的特定需要、期望或特定实施方式以及所描述的功能,可以使用两个或更多个数据库(相同或类型的组合)。虽然数据库406被示出为计算机402的组成部分,但是在可选实施方式中,数据库406可以在计算机402外部。如图所示,数据库406保存一个或多个经训练的CNN 416、一个或多个经训练的CNN 416的每个卷积层的预先计算的可重用因子418和Winograd算法426,以快速计算CNN。
计算机402还包括存储器407,存储器407可以保存计算机402或可以连接到网络430的其他组件(无论是否示出)(或两者的组合)的数据。存储器407可以存储与本公开一致的任何数据。在一些实施方式中,根据计算机402的特定需要、期望或特定实施方式以及所描述的功能,存储器407可以是两种或更多种不同类型的存储器的组合(例如,半导体存储设备和磁存储设备的组合)。尽管在图4中示出为单个存储器407,但是根据计算机402的特定需要、期望或特定实施方式以及所描述的功能,可以使用两个或更多个存储器407(相同或类型的组合)。虽然存储器407被示为计算机402的集成组件,但是在可选实施方式中,存储器407可以在计算机402外部。
应用408是算法软件引擎,其根据计算机402的特定需要、期望或特定实施方式,特别是关于本公开中描述的功能提供功能。例如,应用408可以用作一个或多个组件、模块或应用。此外,虽然被示为单个应用408,但是应用408可以被实现为计算机402上的多个应用408。另外,尽管被示为与计算机402集成在一起,但是在可选实施方式中,应用408可以在计算机402外部。
计算机402还可以包括电源414。电源414可以包括被配置为用户可更换的可充电电池或用户不可更换的不可充电电池。在一些实施方式中,电源414可以包括功率转换或管理电路(包括充电、待机或其他功率管理功能)。在一些实施方式中,电源414可以包括电源插头,以允许计算机402被接入到墙壁插座或其他电源,从而例如为计算机402供电或为可充电电池充电。
可以存在与包含计算机402的计算机系统相关联或在其外部的任何数量的计算机402,每个计算机402通过网络430通信。此外,在不脱离本公开的范围的情况下,术语“客户端”、“用户”和其他适当的术语可以适当地互换使用。此外,本公开预期许多用户可以使用一个计算机402,或者一个用户可以使用多个计算机402。
所描述的主题的实施方式可以包括单独或组合的一个或多个特征。
例如,在第一实施方式中,一种计算机实现的方法包括:数据处理装置获得包括一个或多个卷积层的经训练的卷积神经网络,所述一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;数据处理装置基于经训练的卷积神经网络的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子;数据处理装置接收经训练的卷积神经网络的输入数据;数据处理装置基于预先计算的可重用因子和输入数据,使用Winograd卷积运算符来计算一个或多个卷积层各自的输出;数据处理装置基于一个或多个卷积层各自的输出,确定经训练的卷积网络的输出数据。
在第二实施方式中,一种非暂时性计算机可读介质,存储可由计算机系统执行以执行操作的一个或多个指令,所述操作包括:获得经训练的卷积神经网络,所述经训练的卷积神经网络包括一个或多个卷积层,一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;基于经训练的卷积神经网络的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子;接收经训练的卷积神经网络的输入数据;基于预先计算的可重用因子和输入数据,使用Winograd卷积运算符来计算一个或多个卷积层各自的输出;基于一个或多个卷积层各自的输出,确定经训练的卷积网络的输出数据。
在第三实施方式中,一种计算机实现的系统包括:一个或多个计算机;以及一个或多个计算机存储器设备,与所述一个或多个计算机可互操作地耦接并具有存储指令的有形非暂时性机器可读介质,所述指令在由一个或多个计算机执行时执行操作,所述操作包括:获得经训练的卷积神经网络,所述经训练的卷积神经网络包括一个或多个卷积层,一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;基于经训练的卷积神经网络的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子;接收经训练的卷积神经网络的输入数据;基于预先计算的可重用因子和输入数据,使用Winograd卷积运算符来计算一个或多个卷积层各自的输出;基于一个或多个卷积层各自的输出确定经训练的卷积网络的输出数据。
前述和其他描述的实施方式可以各自可选地包括以下特征中的一个或多个:
第一特征,可与下述特征中的任一个组合,其中,基于经训练的卷积神经网络的已知滤波器参数,预先计算一个或多个卷积层各自的可重用因子,包括:基于经训练的卷积神经网络的已知滤波器参数,离线计算一个或多个卷积层各自的可重用因子,而不管经训练的卷积神经网络的输入数据如何。
第二特征,可与前述或下述特征中的任一个组合,还包括保存一个或多个卷积层各自的预先计算的可重用因子。
第三特征,可与前述或下述特征中的任一个组合,其中,基于预先计算的可重用因子和输入数据,计算一个或多个卷积层各自的输出,包括:利用预先计算的可重用因子和输入数据,根据Winograd最小滤波算法来计算一个或多个卷积层各自的输出。
第四特征,可与前述或下述特征中的任一个组合,其中,经训练的卷积神经网络的输入数据包括一个或多个图像。
第五特征,可与前述或下述特征中的任一个组合,该方法或操作还包括:数据处理装置接收经训练的卷积神经网络的第二输入数据;数据处理装置基于预先计算的可重用因子和第二输入数据,计算一个或多个卷积层各自的第二输出;数据处理装置基于一个或多个卷积层各自的第二输出,预测经训练的卷积网络的第二输出数据。
第六特征,可与前述或下述特征中的任一个组合,该方法或操作还包括经由用户界面输出经训练的卷积网络的输出数据。
本文描述的主题和功能性操作的实施方式可以在数字电子电路中、在有形地实现的计算机软件或固件中、在包括本文公开的结构及其结构等效物的计算机硬件中、或者在它们中的一个或多个的组合中实现。所描述的主题的软件实施方式可以被实现为一个或多个计算机程序,即,在有形的、非暂时性的、计算机可读的计算机存储介质上编码的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。可选地或附加地,程序指令可以被编码在例如,机器生成的电、光或电磁信号的人工生成的传播信号中/之上,所述人工生成的传播信号被生成以编码用于传输到适当的接收器装置以便数据处理装置执行的信息。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或计算机存储介质的组合。配置一个或多个计算机意味着一个或多个计算机已经安装了硬件、固件或软件(或硬件、固件和软件的组合),使得当软件由一个或多个计算机执行时,执行特定的计算操作。
术语“实时”、“实时(快速)时间(RFT)”、“近实时(NRT)”、“准实时”或类似术语(如所属领域的普通技术人员所了解的)意指动作和响应在时间上接近,使得个体大体上同时感知到所述动作和所述响应发生。例如,在个人访问数据的动作之后,用以显示数据的响应(或启动显示)的时间差可以小于1毫秒、小于1秒、或小于5秒。尽管所请求的数据不需要被即时显示(或被启动以显示),但是考虑到所描述的计算系统的处理限制以及例如收集、精确测量、分析、处理、存储或发送数据所需的时间,在没有任何故意延迟的情况下显示(或被启动以显示)所请求的数据。
术语“数据处理装置”、“计算机”或“电子计算机设备”(或本领域普通技术人员所理解的等同物)指的是数据处理硬件,并且包括用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。所述装置还可以是或进一步包括专用逻辑电路,例如,中央处理单元(CPU)、FPGA(现场可编程门阵列)或ASIC(专用集成电路)。在一些实施方式中,数据处理设备或专用逻辑电路(或数据处理设备或专用逻辑电路的组合)可以是基于硬件或软件的(或基于硬件和软件两者的组合)。所述装置可以可选地包括创建用于计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或执行环境的组合的代码。本公开预期使用具有或不具有例如Linux、UNIX、Windows、MAC OS、Android、IOS的常规操作系统或任何其它合适的常规操作系统的数据处理装置。
计算机程序,也可被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码,可以以任何形式的编程语言来编写,包括编译或演绎性语言、说明或程序性语言,并且计算机程序可以被配置为任何形式,包括作为独立程序或作为模块、组件、子例程、或适于在计算环境中使用的其它单元。计算机程序可以但非必须对应于文件系统中的文件。程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件中;或者多个协同文件中,例如,存储一个或多个模块、子程序或代码的部分的文件。计算机程序可以被配置为在一个计算机上执行,或者在位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。
尽管示出了在各图中示出的程序的各部分为通过各种对象、方法或其它处理实现各种特征和功能的各个模块,但所述程序可适当地包括多个子模块、第三方服务、组件、库等。相反,各种组件的特征和功能可以适当地被组合成单个组件。用于进行计算确定的阈值可以静态地、动态地、或者静态和动态地确定。
本文描述的方法、处理或逻辑流程可以由一个或多个可编程计算机执行一个或多个计算机程序来执行,以通过操作输入数据并生成输出来执行功能。方法、处理或逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实现为专用逻辑电路,例如CPU、FPGA或ASIC。
适于执行计算机程序的计算机可以基于通用微处理器和/或专用微处理器、或任何其它种类的CPU。通常,CPU从存储器接收指令和数据,并将指令和数据写入存储器。计算机的基本元件是用于进行或执行指令的CPU,以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还包括或可操作地耦接到用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,以从所述一个或多个大容量存储设备接收数据和/或向其传送数据。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器、或便携式存储设备中,例如通用串行总线(USB)闪存驱动器中,这里仅举几例。
适于存储计算机程序指令和数据的计算机可读介质(适当地,暂时性或非暂时性)包括所有形式的永久性/非永久性或易失性/非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如随机存取存储器(RAM)、只读存储器(ROM)、相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存设备;磁性设备,例如磁带、盒式磁带、内部/可移动磁盘;磁光盘;以及光学存储设备,例如,数字视频盘(DVD)、CD-ROM、DVD+/-R、DVD-RAM、DVD-ROM、HD-DVD和BLURAY,以及其它光学存储技术。存储器可以存储各种对象或数据,包括高速缓存、类、框架、应用、模块、备份数据、作业、网页、网页模板、数据结构、数据库表、存储动态信息的储存库、以及包括任何参数、变量、算法、指令、规则、约束或引用的任何其它适当信息。另外,存储器可以包括任何其他适当的数据,例如日志、策略、安全或访问数据、报告文件以及其他数据。处理器和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
为了提供与用户的交互,在本文中描述的主题的实施方式可以在计算机上实现,该计算机具有:用于向用户显示信息的显示设备,例如,CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)或等离子体监视器;以及键盘和用户可以用来向该计算机提供输入的例如鼠标、轨迹球或轨迹板等的指针设备。还可以使用触摸屏向计算机提供输入,诸如具有压力灵敏度的平板计算机表面、使用电容或电感的多点触控屏、或其它类型的触摸屏。也可使用其它种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从该设备接收文档来与用户交互;例如通过响应于从web浏览器接收的请求而向用户的客户端设备上的web浏览器发送网页。
术语“图形用户界面”或“GUI”可以以单数或复数使用,以描述一个或多个图形用户界面和特定图形用户界面的每个显示。因此,GUI可以表示任何图形用户界面,包括但不限于web浏览器、触摸屏或处理信息并有效地向用户呈现信息结果的命令行界面(卷积层I)。一般而言,GUI可包括一个或多个用户界面(UI)元素、所述用户界面元素中的一些或全部与web浏览器相关联,诸如交互字段、下拉列表和按钮。这些和其它UI元素可以与web浏览器的功能相关或表示web浏览器的功能。
本文描述的主题的实施方式可以在包括例如作为数据服务器的后端组件的计算系统中、或者包括例如应用服务器的中间件组件的计算系统中、或者包括例如具有图形用户界面或Web浏览器的客户端计算机的前端组件的计算系统中、或者包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合的计算系统中实现,其中用户可以通过图形用户界面或Web浏览器与本文描述的主题的实施方式进行交互。系统的组件可以通过有线或无线数字数据通信(或数据通信的组合)的任何形式或介质(例如通信网络)来互连。通信网络的示例包括局域网(LAN)、无线电接入网(RAN)、城域网(MAN)、广域网(WAN)、微波接入全球互通(WIMAX)、使用例如802.11a/b/g/n或802.20(或者802.11x和802.20的组合或与本公开一致的其它协议)的无线局域网(WLAN)、因特网的全部或一部分、或任何其它通信系统或在一个或多个位置处的系统(或通信网络的组合)。例如,网络可以与网络地址之间的因特网协议(IP)分组、帧中继帧、异步传输模式(ATM)单元、语音、视频、数据或其它适当信息(或通信类型的组合)通信。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络交互。客户端和服务器的关系借助运行在各自的计算机上并且彼此具有客户端-服务器关系的计算机程序产生。
虽然本文包含许多具体实施方式的细节,但是这些细节不应被解释为对任何发明的范围或对所要求保护的范围的限制,而应被解释为对特定发明的特定实施方式所特有的特征的描述。在单独实施方式的背景下在本文描述的某些特征也可以在单个实施方式中组合地实现。相反,在单个实施方式背景下描述的各种特征也可以在多个实施方式中单独地或以任何合适的子组合来实现。此外,尽管先前描述的特征可被描述为以某些组合起作用,甚至最初也这样要求保护,但是在一些情况下,来自所要求保护的组合的一个或多个特征可从该组合中去除,并且所要求保护的组合可针对子组合或子组合的变型。
已经描述了主题的特定实施方式。所描述的实施方式的其它实现、变更和置换在所附权利要求的范围内,这对于本领域技术人员来说是显而易见的。虽然在附图或权利要求中以特定顺序描述了操作,但是这不应当被理解为要求以所示的特定顺序或按次序执行这样的操作,或者要求执行所有所示的操作(可以认为一些操作是可选的),以实现期望的结果。在某些情况下,可以认为多任务或并行处理(或多任务和并行处理的组合)可能是有利的,并且被适当地执行。
此外,先前实施方式中描述的各种系统模块和组件的分离或集成不应被理解为在所有实施方式中都需要这样的分离或集成,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者被打包到多个软件产品中。
因此,先前描述的示例性实施方式不限定或约束本公开。在不脱离本公开的精神和范围的情况下,其它改变、替换和变更也是可能的。
此外,可认为任何要求保护的实施方式可应用于至少一种计算机实现的方法;非暂时性计算机可读介质存储用于执行所述计算机实现的方法的计算机可读指令;以及包括与硬件处理器可互操作地耦接的计算机存储器的计算机系统,其被配置成执行计算机实现的方法或存储在非暂时性计算机可读介质上的指令。

Claims (20)

1.一种计算机实现的方法,包括:
数据处理装置获得包括一个或多个卷积层的经训练的卷积神经网络,所述一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;
所述数据处理装置基于所述经训练的卷积神经网络的所述已知滤波器参数,预先计算所述一个或多个卷积层各自的可重用因子;
所述数据处理装置接收所述经训练的卷积神经网络的输入数据;
所述数据处理装置基于所述预先计算的可重用因子和所述输入数据,使用Winograd卷积运算符来计算所述一个或多个卷积层各自的输出;以及
所述数据处理装置基于所述一个或多个卷积层各自的所述输出,确定所述经训练的卷积网络的输出数据。
2.如权利要求1所述的计算机实现的方法,其中,基于所述经训练的卷积神经网络的所述已知滤波器参数,预先计算所述一个或多个卷积层各自的所述可重用因子,包括:
基于所述经训练的卷积神经网络的所述已知滤波器参数,离线计算所述一个或多个卷积层各自的所述可重用因子,而不管所述经训练的卷积神经网络的所述输入数据如何。
3.如权利要求1所述的计算机实现的方法,还包括:
保存所述一个或多个卷积层各自的所述预先计算的可重用因子。
4.如权利要求1所述的计算机实现的方法,其中,基于所述预先计算的可重用因子和所述输入数据,计算所述一个或多个卷积层各自的输出,包括:
使用所述预先计算的可重用因子和所述输入数据,根据Winograd最小滤波算法来计算所述一个或多个卷积层各自的输出。
5.如权利要求1所述的计算机实现的方法,其中,所述经训练的卷积神经网络的所述输入数据包括一个或多个图像。
6.如权利要求1所述的计算机实现的方法,还包括:
所述数据处理装置接收所述经训练的卷积神经网络的第二输入数据;
所述数据处理装置基于所述预先计算的可重用因子和所述第二输入数据,计算所述一个或多个卷积层各自的第二输出;以及
所述数据处理装置基于所述一个或多个卷积层各自的所述第二输出,预测所述经训练的卷积网络的第二输出数据。
7.如权利要求1所述的计算机实现的方法,还包括:
经由用户界面输出所述经训练的卷积网络的所述输出数据。
8.一种非暂时性计算机可读介质,存储能够由计算机系统执行以执行操作的一个或多个指令,所述操作包括:
获得包括一个或多个卷积层的经训练的卷积神经网络,所述一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;
基于所述经训练的卷积神经网络的所述已知滤波器参数,预先计算所述一个或多个卷积层各自的可重用因子;
接收所述经训练的卷积神经网络的输入数据;
基于所述预先计算的可重用因子和所述输入数据,使用Winograd卷积运算符来计算所述一个或多个卷积层各自的输出;以及
基于所述一个或多个卷积层各自的所述输出,确定所述经训练的卷积网络的输出数据。
9.如权利要求8所述的非暂时性计算机可读介质,其中,基于所述经训练的卷积神经网络的所述已知滤波器参数,预先计算所述一个或多个卷积层各自的所述可重用因子,包括:
基于所述经训练的卷积神经网络的所述已知滤波器参数,离线计算所述一个或多个卷积层各自的所述可重用因子,而不管所述经训练的卷积神经网络的所述输入数据如何。
10.如权利要求8所述的非暂时性计算机可读介质,所述操作还包括:
保存所述一个或多个卷积层各自的所述预先计算的可重用因子。
11.如权利要求8所述的非暂时性计算机可读介质,其中,基于所述预先计算的可重用因子和所述输入数据,计算所述一个或多个卷积层各自的输出,包括:
使用所述预先计算的可重用因子和所述输入数据,根据Winograd最小滤波算法来计算所述一个或多个卷积层各自的输出。
12.如权利要求8所述的非暂时性计算机可读介质,其中,所述经训练的卷积神经网络的所述输入数据包括一个或多个图像。
13.如权利要求8所述的非暂时性计算机可读介质,所述操作还包括:
接收所述经训练的卷积神经网络的第二输入数据;
基于所述预先计算的可重用因子和所述第二输入数据,计算所述一个或多个卷积层各自的第二输出;以及
基于所述一个或多个卷积层各自的所述第二输出,预测所述经训练的卷积网络的第二输出数据。
14.如权利要求8所述的非暂时性计算机可读介质,所述操作还包括:经由用户界面输出所述经训练的卷积网络的所述输出数据。
15.一种计算机实现的系统,包括:
一个或多个计算机;以及
一个或多个计算机存储器设备,与所述一个或多个计算机可互操作地耦接,并具有存储指令的有形非暂时性机器可读介质,所述指令在由所述一个或多个计算机执行时执行操作,所述操作包括:
获得包括一个或多个卷积层的经训练的卷积神经网络,所述一个或多个卷积层各自包括具有已知滤波器参数的多个滤波器;
基于所述经训练的卷积神经网络的所述已知滤波器参数,预先计算所述一个或多个卷积层各自的可重用因子;
接收所述经训练的卷积神经网络的输入数据;
基于所述预先计算的可重用因子和所述输入数据,使用Winograd卷积运算符来计算所述一个或多个卷积层各自的输出;以及
基于所述一个或多个卷积层各自的所述输出,确定所述经训练的卷积网络的输出数据。
16.如权利要求15所述的计算机实现的系统,其中,基于所述经训练的卷积神经网络的所述已知滤波器参数,预先计算所述一个或多个卷积层各自的所述可重用因子,包括:
基于所述经训练的卷积神经网络的所述已知滤波器参数,离线计算所述一个或多个卷积层各自的所述可重用因子,而不管所述经训练的卷积神经网络的所述输入数据如何。
17.如权利要求15所述的计算机实现的系统,所述操作还包括:
保存所述一个或多个卷积层各自的所述预先计算的可重用因子。
18.如权利要求15所述的计算机实现的系统,其中,基于所述预先计算的可重用因子和所述输入数据,计算所述一个或多个卷积层各自的输出,包括:
使用所述预先计算的可重用因子和所述输入数据,根据Winograd最小滤波算法来计算所述一个或多个卷积层各自的输出。
19.如权利要求15所述的计算机实现的系统,所述操作还包括:
接收所述经训练的卷积神经网络的第二输入数据;
基于所述预先计算的可重用因子和所述第二输入数据,计算所述一个或多个卷积层各自的第二输出;以及
基于所述一个或多个卷积层各自的所述第二输出,预测所述经训练的卷积网络的第二输出数据。
20.如权利要求15所述的计算机实现的系统,还包括用户界面;所述操作还包括经由所述用户界面输出所述经训练的卷积网络的所述输出数据。
CN201880017855.1A 2018-10-24 2018-10-24 卷积神经网络的快速计算 Pending CN110537193A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/111655 WO2020082263A1 (en) 2018-10-24 2018-10-24 Fast computation of convolutional neural network

Publications (1)

Publication Number Publication Date
CN110537193A true CN110537193A (zh) 2019-12-03

Family

ID=66850328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880017855.1A Pending CN110537193A (zh) 2018-10-24 2018-10-24 卷积神经网络的快速计算

Country Status (14)

Country Link
US (1) US10635951B1 (zh)
EP (1) EP3662414A4 (zh)
JP (1) JP6798021B1 (zh)
KR (1) KR102141324B1 (zh)
CN (1) CN110537193A (zh)
AU (1) AU2018353930B2 (zh)
BR (1) BR112019008055B1 (zh)
CA (1) CA3040685C (zh)
MX (1) MX2019004654A (zh)
PH (1) PH12019500889A1 (zh)
RU (1) RU2722473C1 (zh)
SG (1) SG11201903591QA (zh)
WO (1) WO2020082263A1 (zh)
ZA (1) ZA201902547B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111580828A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN113095493A (zh) * 2020-01-08 2021-07-09 马克西姆综合产品公司 降低神经网络中的内存需求的系统和方法
CN113419779A (zh) * 2020-05-08 2021-09-21 黑芝麻智能科技(重庆)有限公司 可扩展多精度数据流水线系统和方法
CN117495833A (zh) * 2023-11-16 2024-02-02 广州思沛医药科技股份有限公司 一种基于大数据的脑卒中预测方法、系统及存储介质

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US11494608B2 (en) * 2019-08-14 2022-11-08 Intel Corporation Methods and apparatus to tile walk a tensor for convolution operations
US11657282B2 (en) * 2019-09-16 2023-05-23 Qualcomm Incorporated Efficient inferencing with fast pointwise convolution
CN112766471B (zh) * 2019-11-01 2024-03-29 中科寒武纪科技股份有限公司 运算装置及相关产品
CN112784206A (zh) * 2019-11-01 2021-05-11 中科寒武纪科技股份有限公司 winograd卷积运算方法、装置、设备及存储介质
CN111294512A (zh) * 2020-02-10 2020-06-16 深圳市铂岩科技有限公司 图像处理方法、装置、存储介质及摄像装置
CN111475775B (zh) * 2020-04-14 2023-09-15 腾讯科技(深圳)有限公司 图形处理器的数据处理方法、文本处理方法、装置和设备
CN111415000B (zh) * 2020-04-29 2024-03-22 Oppo广东移动通信有限公司 卷积神经网络、基于卷积神经网络的数据处理方法和装置
CN111553466B (zh) * 2020-04-30 2024-03-22 上海商汤智能科技有限公司 信息处理方法、装置及设备
CN111767964A (zh) * 2020-07-08 2020-10-13 福州大学 基于改进的DenseNet的多通道特征重标记图像分类方法
JP2022018997A (ja) * 2020-07-17 2022-01-27 ソニーセミコンダクタソリューションズ株式会社 固体撮像素子、撮像装置、および、情報処理システム
JP7530434B2 (ja) 2020-09-28 2024-08-07 富士フイルム株式会社 医療画像処理方法及び医療画像処理装置
WO2022119466A1 (en) * 2020-12-01 2022-06-09 Huawei Technologies Co., Ltd. Device and method for implementing a tensor-train decomposition operation
JP7420100B2 (ja) * 2021-03-15 2024-01-23 オムロン株式会社 処理装置、処理方法、およびプログラム
KR20220162971A (ko) * 2021-06-02 2022-12-09 세메스 주식회사 데이터 처리 방법 및 데이터 비교 방법
EP4099609A1 (en) * 2021-06-04 2022-12-07 Zama SAS Computational network conversion for fully homomorphic evaluation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112014027631A2 (pt) * 2012-05-04 2019-05-14 Rearden, Llc sistema de multipla antena (mas) e multiusuário (mu) e método
EP3259911B1 (en) * 2015-02-19 2021-04-07 Magic Pony Technology Limited Enhancing visual data using updated neural networks
US10403269B2 (en) * 2015-03-27 2019-09-03 Google Llc Processing audio waveforms
CN105740894B (zh) * 2016-01-28 2020-05-29 北京航空航天大学 一种高光谱遥感图像的语义标注方法
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
CN106407986B (zh) * 2016-08-29 2019-07-19 电子科技大学 一种基于深度模型的合成孔径雷达图像目标识别方法
GB2554711B (en) * 2016-10-06 2020-11-25 Imagination Tech Ltd Buffer addressing for a convolutional neural network
US10230725B2 (en) * 2016-10-24 2019-03-12 Sonicwall Inc. Edge protection for internal identity providers
US10482155B2 (en) * 2016-12-30 2019-11-19 Intel Corporation Winograd algorithm on a matrix processing architecture
RU2651147C1 (ru) * 2017-03-27 2018-04-18 Акционерное общество "ЭЛВИС-НеоТек" Устройство и способ каскадной обработки потока изображений с помощью свёрточных нейронных сетей
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
CN107480707B (zh) * 2017-07-26 2020-08-07 天津大学 一种基于信息无损池化的深度神经网络方法
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
KR102452953B1 (ko) * 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN107844833A (zh) * 2017-11-28 2018-03-27 郑州云海信息技术有限公司 一种卷积神经网络的数据处理方法、装置及介质
US10372787B2 (en) * 2017-12-12 2019-08-06 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113095493A (zh) * 2020-01-08 2021-07-09 马克西姆综合产品公司 降低神经网络中的内存需求的系统和方法
CN111580828A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN111580828B (zh) * 2020-04-30 2021-08-27 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置
CN113419779A (zh) * 2020-05-08 2021-09-21 黑芝麻智能科技(重庆)有限公司 可扩展多精度数据流水线系统和方法
US20210349718A1 (en) * 2020-05-08 2021-11-11 Black Sesame International Holding Limited Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks
US11687336B2 (en) * 2020-05-08 2023-06-27 Black Sesame Technologies Inc. Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks
CN117495833A (zh) * 2023-11-16 2024-02-02 广州思沛医药科技股份有限公司 一种基于大数据的脑卒中预测方法、系统及存储介质
CN117495833B (zh) * 2023-11-16 2024-05-28 广州思沛医药科技股份有限公司 一种基于大数据的脑卒中预测方法、系统及存储介质

Also Published As

Publication number Publication date
KR20200049695A (ko) 2020-05-08
CA3040685A1 (en) 2020-04-28
AU2018353930B2 (en) 2020-10-08
RU2722473C1 (ru) 2020-06-01
WO2020082263A1 (en) 2020-04-30
BR112019008055A2 (pt) 2021-05-18
MX2019004654A (es) 2022-05-04
EP3662414A4 (en) 2020-07-22
CA3040685C (en) 2020-07-28
JP6798021B1 (ja) 2020-12-09
PH12019500889A1 (en) 2019-06-17
BR112019008055B1 (pt) 2022-02-01
JP2021501377A (ja) 2021-01-14
SG11201903591QA (en) 2020-05-28
US20200134400A1 (en) 2020-04-30
KR102141324B1 (ko) 2020-08-05
ZA201902547B (en) 2021-02-24
US10635951B1 (en) 2020-04-28
AU2018353930A1 (en) 2020-05-14
EP3662414A1 (en) 2020-06-10

Similar Documents

Publication Publication Date Title
CN110537193A (zh) 卷积神经网络的快速计算
US11074107B1 (en) Data processing system and method for managing AI solutions development lifecycle
US20240007414A1 (en) Methods, systems, articles of manufacture and apparatus to optimize resources in edge networks
CN104937544B (zh) 用于计算任务结果的方法、计算机可读介质和计算机系统
US9262493B1 (en) Data analytics lifecycle processes
US11128668B2 (en) Hybrid network infrastructure management
CN112199189B (zh) 深度学习模型对资源受限边缘设备的适应
US20180060330A1 (en) Parallel scoring of an ensemble model
US20170124492A1 (en) System for automated capture and analysis of business information for reliable business venture outcome prediction
US11468368B2 (en) Parametric modeling and simulation of complex systems using large datasets and heterogeneous data structures
US20220261299A1 (en) Api configuration using auto-rationalization and modeling
JP2023544904A (ja) 機械学習パイプラインの分散型リソースアウェアトレーニング
US20210312324A1 (en) Systems and methods for integration of human feedback into machine learning based network management tool
US20210142197A1 (en) Methods and systems for diverse instance generation in artificial intelligence planning
US20240086791A1 (en) Automatic adjustment of constraints in task solution generation
US20240112065A1 (en) Meta-learning operation research optimization
US20230186074A1 (en) Fabricating data using constraints translated from trained machine learning models
US11734576B2 (en) Cooperative neural networks with spatial containment constraints
CN115002215A (zh) 面向云上政企的资源分配模型训练方法以及资源分配方法
CN113052309A (zh) 压缩神经网络模型的方法、计算机系统以及存储介质
US12112249B2 (en) Multi-objective automated machine learning
US20240085892A1 (en) Automatic adaption of business process ontology using digital twins
US20240220270A1 (en) Data-analysis-based consolidation of process pipelines
US20240144052A1 (en) Automated decision optimization for maintenance of physical assets
US20240249183A1 (en) Automated text generation using artificial intelligence techniques

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40017973

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191203