CN107729994B - 执行卷积神经网络中的卷积层的运算的方法和装置 - Google Patents

执行卷积神经网络中的卷积层的运算的方法和装置 Download PDF

Info

Publication number
CN107729994B
CN107729994B CN201711212061.4A CN201711212061A CN107729994B CN 107729994 B CN107729994 B CN 107729994B CN 201711212061 A CN201711212061 A CN 201711212061A CN 107729994 B CN107729994 B CN 107729994B
Authority
CN
China
Prior art keywords
dimension
convolution
folded
convolution kernel
feature data
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
CN201711212061.4A
Other languages
English (en)
Other versions
CN107729994A (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.)
Nanjing Horizon Robotics Technology Co Ltd
Original Assignee
Nanjing Horizon Robotics Technology 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 Nanjing Horizon Robotics Technology Co Ltd filed Critical Nanjing Horizon Robotics Technology Co Ltd
Priority to CN201711212061.4A priority Critical patent/CN107729994B/zh
Publication of CN107729994A publication Critical patent/CN107729994A/zh
Priority to JP2018221331A priority patent/JP6775565B2/ja
Priority to US16/203,031 priority patent/US11822616B2/en
Priority to KR1020180149479A priority patent/KR102275499B1/ko
Priority to EP18208757.7A priority patent/EP3489862B1/en
Application granted granted Critical
Publication of CN107729994B publication Critical patent/CN107729994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Error Detection And Correction (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Image Processing (AREA)

Abstract

公开了一种执行卷积神经网络中的卷积层的运算的方法和装置。该方法包括:在宽度和高度中的至少一个维度上折叠提供给卷积层的未折叠特征数据,以生成折叠特征数据;对折叠特征数据和该卷积层的原始卷积核执行预处理;在至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。通过该方法,可以提高通道利用率,降低缓存占用量,并且可以提高运算效率。

Description

执行卷积神经网络中的卷积层的运算的方法和装置
技术领域
本发明总体上涉及卷积神经网络的技术领域,并且具体地涉及执行卷积神经网络中的卷积层的运算的方法和装置。
背景技术
基于卷积神经网络的深度学习技术已经被广泛地应用于图像识别、视频分析、自然语言处理、辅助驾驶等不同的领域。卷积神经网络中的运算量通常很大。期望能够使用诸如通用的中央处理器(CPU)、图形处理器(GPU)或专用加速器等硬件高效地执行卷积神经网络中的运算。
发明内容
一方面,提供一种执行卷积神经网络中的卷积层的运算的方法。该方法可以包括:在宽度和高度中的至少一个维度上折叠提供给卷积层的未折叠特征数据,以生成折叠特征数据;对折叠特征数据和该卷积层的原始卷积核执行预处理;在至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
另一方面,还提供一种执行卷积神经网络中的卷积层的运算的装置。该装置可以包括被配置为执行上述方法的一个或多个处理器。
另一方面,还提供一种执行卷积神经网络中的卷积层的运算的装置。该装置可以包括:第一折叠器,被配置为在宽度和高度中的至少一个维度上折叠提供给卷积层的未折叠特征数据,以生成折叠特征数据;预处理器,被配置为对折叠特征数据和卷积层的原始卷积核执行预处理;第二折叠器,被配置为在至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及运算器,被配置为使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
另外,还提供一种非临时性存储介质,在其上存储有在被计算装置执行时执行上述方法的程序指令。
通过根据本公开的实施例的方法和/或装置,能够提高通道利用率,降低缓存占用量,并且可以提高运算效率。
附图说明
图1示出根据本公开的实施例的执行卷积神经网络中的卷积层的运算的方法的流程图。
图2示出根据本公开的实施例的在一个维度上折叠未折叠特征数据的示例。
图3示出根据本公开的实施例的在两个维度上折叠未折叠特征数据的示例。
图4示出根据本公开的实施例的对折叠特征数据和原始卷积核执行预处理的示例。
图5示出根据本公开的实施例的在一个维度上折叠经预处理的原始卷积核的示例。
图6示出根据本公开的实施例的在两个维度上折叠经预处理的原始卷积核的示例。
图7示出根据本公开的实施例的执行卷积运算的示例。
图8示出根据本公开的实施例的执行卷积运算的示例。
图9示出根据本公开的实施例的执行卷积神经网络中的卷积层的运算的装置的示例。
图10示出根据本公开的实施例的执行卷积神经网络中的卷积层的运算的装置的示例。
具体实施方式
提供给卷积神经网络的一个特征数据可以被视为一个数据立方体,并且可以具有宽度、高度和深度(即,不同的通道)等多个维度,该特征数据中的每个数据可以分别对应于数据立方体中的一个点。相应地,卷积神经网络中用于卷积运算的权重参数每个卷积核也可以被视为一个数据立方体。
通常,在描述一个数据立方体时,可以采用术语“切片”。如果将一个数据立方体的三维度视为分别对应于三维笛卡尔坐标系中的X轴、Y轴和Z轴所表示的维度,则该数据立方体在与X轴所表示的维度相对应的第一维度上的一个切片表示使用与X轴正交的一个平面对该数据立方体中的数据进行采样所获得的结果,该结果是一个在由Y轴和Z轴所表示的二维平面上的一个矩形数据。形式化地,如果将一个数据立方体视为点的集合Cube={(x,y,z)|x∈[0,W),y∈[0,H),x∈[0,D)},W、H和D均为大于0的整数,则该数据立方体的在与X轴所表示的维度相对应的第一维度上的一个切片Slicei={(y,z)|x=i,y∈[0,H),x∈[0,D)},i∈[0,W)。所包含的所有数据均为零(或者相当于零)的值的切片可以被称为零切片。
在本文中,为了描述上的方便,在描述特征数据或卷积核在某一维度上的数据时,也使用术语“切片”,例如在宽度的维度上的切片(在本文中简称为“宽度切片”)、在高度的维度上的切片(在本文中简称为“高度切片”)等。
在本文中,当提及在数据立方体A的第一维度上(例如宽度这样的维度)填充或附加一个或多个零切片时,可以意味着通过在A的第一维度上的某个边界处(例如,在宽度上的左侧或右侧)增加一个或多个零切片来增加A的第一维度的维度值(例如,宽度),所增加的每个零切片在另外的两个维度(例如,高度和深度这两个维度)上与原始的A具有相同的维度值(例如,高度值和深度值)。
在本文中,当提及在数据立方体A的第一维度和第二维度上(例如,宽度和高度这两个维度)填充或附加一个或多个零切片时,可以意味着通过在A的第一维度上的某个边界处(例如,在宽度上的左侧或右侧)增加一个或多个零切片来增加A的第一维度的维度值(例如,宽度),所增加的每个零切片在另外的两个维度(例如,高度和深度这两个维度)上与原始的A具有相同的维度值(例如,高度值和深度值),然后在增加宽度之后所获得的数据立方体A’的第二维度上的某个边界处(例如,在高度上的上侧或下侧)增加一个或多个零切片,以增加A’的第二维度的维度值(例如,高度),所增加的每个零切片在另外的两个维度(例如,宽度和深度这两个维度)上与A’具有相同的维度值(例如,宽度值和深度值)。
在本文中,当提及对使数据立方体A的各个切片在深度上对齐时,可以意味着针对A的不具有期望深度值的切片(可以是宽度切片,也可以是高度切片),在深度上添补零(或者相当于零的值),使得添补后的A的各个切片具有期望深度值。
在本文中,当提及在数据立方体A的第一维度和/或第二维度上进行填充时,除非特别说明,否则所填充的零切片的数量可以是零个或一个或多个。
卷积神经网络中的运算量通常很大,期望能够使用诸如通用的中央处理器、图形处理器或专用加速器等硬件高效地执行卷积神经网络中的运算。为了提高运算效率和/或简化硬件设计,例如可以设计支持多通道的存储器来对执行卷积运算的加法器和/或乘法器提供数据,或者将运算器设计为支持多个通道的运算。
通常,提供给卷积神经网络的输入层的特征数据的通道数量可能很少(通常为3个通道或1个通道),并且在卷积神经网络的前馈推理方向上的相对靠前的卷积层的输入特征数据的通道数量也可能很少。为了实现通道对齐,可能需要在深度或通道的维度上对特征数据以及相应的卷积核补充零切片,从而造成例如高速缓冲存储器和/或乘法器等硬件资源的浪费,并且可能会引入很多无效的运算。
图1示出根据本公开的实施例的执行卷积神经网络中的卷积层的运算的示例方法100,该方法可以包括:
步骤S101,在宽度和高度中的至少一个维度上折叠提供给卷积层的未折叠特征数据,以生成折叠特征数据;
步骤S105,对折叠特征数据和该卷积层的原始卷积核执行预处理;
步骤S110,折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及
步骤S115,使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
通过根据本公开的实施例的方法,至少能够简化硬件设计,提高通道或硬件资源的利用率,和/或提高运算的并行度。
如图1所示,根据本公开的实施例的执行卷积神经网络中的卷积层的运算的示例方法100可以开始于步骤S101,以在宽度和高度中的至少一个维度上折叠提供给卷积层的未折叠特征数据。
在一个实施例中,针对提供给一个卷积层的未折叠的原始特征数据FD,可以在宽度和高度中的一个维度D1上,以将FD的在D1上的每Nx个(在本文中,也被称为在D1上的拼接数量,在上下文清楚的情况下可以被简称为拼接数量)的连续的切片在深度上拼接到一起的方式,对FD进行折叠并生成FD’,使得FD中的在D1上的第ifx×Nx+jfx个切片的所有Cx个通道的数据对应于FD’的在D1上的第ifx个切片的从第jfx×Cx个通道开始的连续的Cx个通道的数据,其中,Nx为大于1的整数,ifx为大于或等于0的整数,jfx为大于或等于0且小于Nx的整数,Cx为大于0的整数。
在另一个实施例中,可以在获得FD’之后,继续在宽度和高度中的另一个维度D2上,以将FD’的在D2上的每Ny(在本文中,也被称为在D2上的拼接数量,在上下文清楚的情况下可以被简称为拼接数量)个的连续的切片在深度上拼接到一起的方式,对FD’进行折叠并生成FD”,使得FD’中的在D2上的第ify×Ny+jfy个切片的所有Cy个通道的数据对应于FD”的在D2上的第ify个切片的从第jfy×Cy个通道开始的连续的Cy个通道的数据,其中,Ny为大于1的整数,ify为大于或等于0的整数,jfy为大于或等于0且小于Ny的整数,Cy为大于0的整数。
图2示出对提供给一个卷积层的宽度、高度和深度分别为6、5和3的原始特征数据FD在宽度上进行折叠的示例。在图2中,每个小立方块表示未折叠特征数据FD中的一个数据值(例如,RGB图像中的一个颜色的像素值)。在每个小立方块的正面标记有“x,y”形式的宽度和高度两个维度上的坐标值,并且在侧面标记有该小立方块所代表的数据值在FD中的通道号。例如,在正面标记有“1,1”的小立方块表示该小立方块位于FD中的从宽度和高度这两个维度上看的第1行第1列。另外,在该小立方块的侧面标记有“1”,这表示,该小立方块位于FD中的从深度(或通道)这个维度看的第1排。所有的这样的小立方块构成未折叠特征数据FD,并且FD包含6个宽度切片,即,FD中的第1列的所有小立方块(y=1)、FD中的第2列的所有小立方块(y=2)、FD中的第3列的所有小立方块(y=3)、FD中的第4列的所有小立方块(y=4)、FD中的第5列的所有小立方块(y=5)以及FD中的第6列的所有小立方块(y=6)。
在图2的示例中,通过将第2列的宽度切片在深度上拼接到第1列的宽度切片的后面、将第4列的宽度切片在深度上拼接到第3列的宽度切片的后面、并且将第6列的宽度切片在深度上拼接到第5列的宽度切片的后面,将FD的在宽度上的每2个切片(Nx=2)在深度上拼接到一起,从而在宽度上折叠FD并生成宽度折叠特征数据FD’。如图2所示,例如FD中的第2列的宽度切片的数据对应于FD’中的第1列的宽度切片中的第4至第6号通道上的数据。
如图2所示,相比于FD,FD’的高度不变,但是宽度减小并且深度加倍,由此可以允许提高通道的利用率并至少可以减小在宽度上的运算量。
在本文中,例如在图2中,为了清楚地表示折叠前后的特征数据(以及将在下文描述的卷积核)中的切片的对应关系,针对折叠后所生成的图像中的各个小立方块不重新编号。另外,在上下文清楚的情况下,可能不示出特征数据(以及将在下文描述的卷积核)中的每个小立方块,而是使用平面来表示各个切片。例如,如果将宽度、高度和深度三个维度分别对应于三维笛卡尔坐标系中的X轴、Y轴和Z轴,则可以采用垂直于X轴(或平行于Y-Z平面)的平面来表示特征数据(或将在下文描述的卷积核)的宽度切片。
图3示出针对在图2的示例中的宽度折叠特征数据FD’继续在高度上进行折叠的示例。在图3的示例中,通过将第2行的高度切片在深度上拼接到第1行的高度切片的后面并且将第4行的高度切片在深度上拼接到第3行的高度切片的后面,将FD’的在高度上的第2个切片(Ny=2)在深度上拼接到一起,从而在高度上折叠FD’并生成高度折叠特征数据FD”。如图3所示,例如FD’中的第4行的高度切片的数据对应于FD”中的第2行的高度切片中的第7至第12号通道上的数据。
如图3所示,在折叠的过程中,在FD’中没有另外的高度切片可以拼接到第5行高度切片的后面,即在FD’中没有另外的高度切片可以与FD’的第5行高度切片在深度上进行拼接,从而导致所生成的FD”的各个高度切片在深度(或通道)上不对齐。
针对这样的情况,在一个实施例中,可以在折叠之前先检查FD’的高度切片的总数量(即,FD’的高度),如果总数量不是Ny的整数倍,则可以先在FD’的下侧(即,在高度上的结束边界处)附加一个或多个零切片(图3中未示出),使得FD’的高度切片的总数量成为Ny的整数倍。所附加的零切片的数量可以小于拼接数量。
在另外的实施例中,可以在折叠的过程中,针对FD’的最后一个高度切片(即第5行的切片),确定是否仍需要在该切片的基础上继续在深度上拼接。如果是,例如针对FD’中的第5行的切片这样的切片,则可以继续使用额外的一个或多个零切片(例如,图3中的FD”中的各个虚线立方块A所代表的切片)与该切片在深度上进行拼接。
在另外的实施例中,可以在折叠之后,对FD”添补额外的一个或多个零切片(例如,图3中的FD”中的各个虚线立方块A所代表的切片),使得添补后的FD”中的各个高度切片的通道对齐。
在另外的实施例中,可以直接利用硬件(例如,支持多通道的运算器或存储器)的特性或处理能力。例如,在硬件可以具有通道对齐的能力的情况下,未被实际数据占据的通道可以被硬件自动地视为具有零值。在这样的情况下,FD”中的每个切片的通道将由硬件自动地对齐。例如,如果硬件同时支持32个通道,则FD”的通道数量可以由硬件自动地对齐为32个通道。
应当意识到,虽然在图2中没有示出,但是对于在宽度上的折叠,同样可能存在折叠特征数据中的最后的宽度切片的通道数量与其他宽度切片的通道数量不一致的情况。与针对图3的示例中的FD’和/或FD”的处理相类似地,在宽度上,可以在折叠之前或折叠的过程中或在折叠之后对经填充的未折叠特征数据或者所获得的折叠特征数据进行处理,或者借助硬件的特性自动处理,使得最终获得的折叠特征数据中的每个宽度切片的通道对齐。
另外,虽然图2示出针对FD在宽度上进行折叠以获得FD’,并且在图3中示出针对FD’在高度上进行折叠以获得FD”,但是在另外的实施例中,可以针对FD先在高度上进行折叠然后在宽度上进行折叠,也可以只在宽度上折叠或者只在高度上折叠。
另外,根据本公开的实施例的方法不局限于图2所示的Nx值和/或图3所示的Ny值。拼接数量Nx或Ny可以为3、4或者其他大于1的任何整数。在一个实施例中,可以根据硬件(例如支持多通道的存储器或运算器)所支持的通道的数量来设置用于宽度折叠或高度折叠的拼接数量Nx或Ny。例如,在硬件所支持的通道的数量为TC的情况下,可以将维度D1上的拼接数量Nx确定为小于或等于|TC/Cx|并且大于1的某个值,其中,“||”表示取整运算。如果还需要在维度D2上继续折叠,则可以选择Nx和Ny的值,使得Nx×Ny≤|TC/Cx|,并且Nx和Ny的值均大于1。
在步骤S101之后,示例方法100继续到步骤S105,以对折叠特征数据和原始卷积核执行预处理。
在常规的卷积运算中,即在使用原始卷积核对提供给一个卷积层的原始的未折叠特征数据执行卷积的情况下,原始卷积核在宽度上以步长Sx(大于或等于1)并且在高度上以步长Sy(大于或等于1)在原始的未折叠特征数据上滑动,并对原始的未折叠特征数据中的滑动窗口所对应的部分的数据进行卷积。为了能够获得期望的输出特征数据,在执行卷积之前,可以按照预先指定的填充方式,在原始的未折叠特征数据的在宽度和高度这两个维度上的四周(包括在宽度上的起始边界和结束边界以及在高度上的起始边界和结束边界)填充零切片,所填充的零切片的数量取决于所指定的填充方式,可以为0个、1个或多个。对于已经设计好的一个卷积神经网络,每个卷积层中所使用的权重参数(包括卷积核的数量以及每个卷积核的宽度、高度、深度和所包含的值)以及针对提供给该卷积层的原始的未折叠特征数据的填充方式总是已知的。这些设置可以由该卷积神经网络的设计人员在卷积神经网络的设计时事先指定,也可以通过学习来设计或调整。
为了确保使用根据本公开的实施例的方法仍然能够得到正确的期望结果,需要对折叠特征数据和原始卷积核执行预处理。
如果针对提供给一个卷积层的原始的未折叠特征数据FD,在宽度和高度中的一个维度D1上按照拼接数量Nx进行折叠并获得折叠特征数据FD’,则可以根据该卷积层所指定的针对FD的填充方式来确定针对FD要在D1的起始边界处进行填充的填充量P1,P1≥0。然后,可以在FD’的在D1的起始边界处填充
Figure BDA0001484778890000081
个的零切片,其中,
Figure BDA0001484778890000082
表示向上取整运算。
对于FD’的在D1的结束边界,可以根据该卷积层所指定的针对FD的填充方式来确定针对FD要在D1的结束边界处进行填充的填充量P2,P2≥0。然后,如果P2>(FVx’×Nx-FVx),则可以在FD’的在D1的结束边界处填充
Figure BDA0001484778890000083
个的零切片,其中,FVx和FVx’分别表示FD和FD’在D1上的维度值(例如,在D1为宽度的情况下的宽度值)。也可以先计算出预期的折叠卷积核在D1上的维度值
Figure BDA0001484778890000084
其中,Sx表示原始卷积核在D1上的步长,KVx表示原始卷积核在D1上的维度值,(Nx,Sx)表示Nx和Sx的最大公约数。然后,如果Nx≠Sx,则可以确定在FD’的在D1的结束边界的填充量P2’,使得
Figure BDA0001484778890000085
的结果值是Sx的整数倍;否则,可以确定在FD’的在D1的结束边界的填充量P2’,使得P2’<KVx’。
另外,可以在原始卷积核的在D1上的起始边界处填充
Figure BDA0001484778890000086
个零切片。
在一个实施例中,如果针对FD,只是在D1上进行折叠并获得FD’作为最终的折叠特征数据,则可以按照该卷积层所指定的要在宽度和高度中的另一个维度D2上对FD进行填充的填充方式,对FD’的在D2上的起始边界和/或结束边界处进行填充。
在另外的实施例中,如果针对FD’,还要继续在D2上按照拼接数量Ny进行折叠并获得FD”作为最终的折叠特征数据,则在步骤S105中,还可以根据该卷积层所指定的针对FD的填充方式来确定针对FD要在D2的起始边界处进行填充的填充量P3,P3≥0。然后,可以在FD”的在D2的起始边界处填充
Figure BDA0001484778890000091
个的零切片。
类似地,对于FD”的在D2的结束边界,可以根据该卷积层所指定的针对FD的填充方式来确定针对FD要在D1的结束边界处进行填充的填充量P4,P4≥0。然后,如果P4>(FVy”×Ny-FVy’),则可以在FD”的在D2的结束边界处填充
Figure BDA0001484778890000094
个的零切片,其中,FVy’和FVy”分别表示FD’和FD”在D2上的维度值(例如,在D2为高度的情况下的高度值)。也可以先计算出预期的折叠卷积核在D2上的维度值
Figure BDA0001484778890000095
Figure BDA0001484778890000096
其中,Sy表示原始卷积核在D2上的步长,KVy表示原始卷积核在D2上的维度值,(Ny,Sy)表示Ny和Sy的最大公约数。然后,如果Ny≠Sy,则可以确定在FD”的在D2的结束边界的填充量P4’,使得
Figure BDA0001484778890000097
的结果值是Sy的整数倍;否则,可以确定在FD”的在D2的结束边界的填充量P4’,使得P4’<KVy’。
另外,在该实施例中,可以继续在原始卷积核的在D2上的起始边界处填充
Figure BDA0001484778890000098
个零切片。
例如,假设针对图2的示例中的FD所设置的权重参数的卷积核K的宽度、高度和深度分别为3、3和3,在宽度和高度上的卷积的步长均为1,对于FD所指定的填充方式为在左侧和右侧各填充1列(即,各填充1个零切片,而在上侧和下侧不用填充,则在步骤S105中,如图4所示,对于图3中的FD”,可以在FD”的左侧填充
Figure BDA00014847788900000910
个零切片FP,在FD”的右侧填充
Figure BDA0001484778890000099
个零切片FP,从而生成宽度为5的经预处理的折叠特征数据FD”’,并且对于原始卷积核K,可以在K的左侧填充
Figure BDA0001484778890000092
Figure BDA0001484778890000093
个零切片KP,从而生成宽度为4的经预处理的卷积核K’。
虽然图4的示例中仅示出一个原始卷积核,但是应当意识到,一个卷积层的权重参数也可以具有多个卷积核,在这样的情况下,可以根据本公开的实施例的方法对该权重参数的每个卷积核进行处理。
在对折叠特征数据和原始卷积核执行预处理之后,示例方法100可以继续到步骤S110,以对经预处理的原始卷积核进行折叠。
在步骤S110中,可以通过在经预处理的卷积核K’的在D1上的起始边界处分别填充kx×Sx个零切片,来生成与原始卷积核K或经预处理的卷积核K’相对应的一个或多个变换卷积核K’[kx],其中,Sx为原始卷积核K在D1上的步长,kx为大于或等于0的整数。例如,可以通过分别0个零切片、Sx个零切片和2×Sx个零切片来生成与原始卷积核K的3个变换卷积核。
可以设置kx的最大值,以控制变换卷积核的数量。例如,可以使kx<Ex,其中,可以将Ex确定为Sx和Nx的最小公倍数除以Sx所得到的结果值,或者Nx除以Nx和Sx的最大公约数所得到的结果值,或者在Sx=1或者Sx与Nx互质的情况下,可以Ex确定为等于Nx。由此,可以生成与K或K’相对应的Ex个变换卷积核K’[kx]。
然后,可以分别针对每个变换卷积核K’[kx],以将D1上的每Nx个的连续的切片在深度上拼接到一起的方式,在D1上对每个K’[kx]进行折叠,以针对每个变换卷积核K’[kx]生成相应的折叠卷积核K”[kx],使得每个K”[kx]中的在D1上的第ikx×Nx+jkx个切片的所有Cx个通道的数据分别对应于K’[kx]的在D1上的第ikx个切片的从第jkx×Cx个通道开始的连续的Cx个通道的数据,其中,ikx为大于或等于0的整数,jkx为大于或等于0且小于Nx的整数。
所生成的变换卷积核K’[kx]可能在D1上具有不同的维度值(例如,在D1为宽度的情况下的宽度值),或者可能存在一个或多个变换卷积核K’[kx],其在D1上的维度值不是Nx的整数倍,使得对应的K”[kx]的切片在深度上不对齐。
针对这样的情况,可以采用与前文所描述的处理特征数据相类似的方式来处理变换卷积核K’[kx],使得所有的变换卷积核K’[kx]在D1上具有相同的维度值并且所有的折叠卷积核K”[kx]的切片在深度上是对齐的。例如,如前文所述,可以借助于硬件(例如,支持多通道的运算器或存储器)的特性或处理能力。例如,在硬件可以具有通道对齐的能力的情况下,未被实际数据占据的通道可以被硬件自动地视为具有零值。在这样的情况下,K”[kx]中的每个切片的通道将由硬件自动地对齐。例如,如果硬件同时支持32个通道,则K”[kx]的通道数量可以由硬件自动地对齐为32个通道。
另外,也可以根据Ex、Sx、Nx和经预处理的卷积核K’在D1上的维度值Vx来确定每个变换卷积核K’[kx]在D1上的期望维度值EVx。例如,可以根据等式
Figure BDA0001484778890000111
来确定每个变换卷积核K’[kx]在D1上的期望维度值EVx。如果变换卷积核K’[kx]在D1上的维度值小于EVx,则可以通过在变换卷积核K’[kx]的在D1上的结束边界处附加零切片来调整的K’[kx],使得调整后的变换卷积核K’[kx]在D1上的维度值等于EVx,然后可以在D1上对调整后的变换卷积核K’[kx]进行折叠,以生成相应的折叠卷积核K”[kx]。
在一个实施例中,如果针对FD,只是在D1上进行折叠并获得FD’作为最终的折叠特征数据,则相应地,在步骤S110中,可以将所获得的折叠卷积核K”[kx]作为最终的折叠卷积核。
在另外的实施例中,如果针对FD’,还要继续在D2上按照拼接数量Ny进行折叠并获得FD”,则相应地,在步骤S110中,还可以继续在D2上按照拼接数量Ny折叠每个折叠卷积核K”[kx]。在D2上按照Ny折叠K”[kx]的过程与在D1上按照Nx折叠经预处理的卷积核K’的过程是相似的。
例如,可以通过在K”[kx]的在D2上的起始边界处分别填充ky×Sy个零切片,来生成与K”[kx]的一个或多个变换卷积核K”[kx,ky],其中,Sy为原始卷积核K在D2上的步长,ky为大于或等于0的整数。同样,可以设置ky的最大值,以控制变换卷积核的数量。例如,可以使ky<Ey,其中,可以将Ey确定为Sy和Ny的最小公倍数除以Sy所得到的结果值,或者Ny除以Ny和Sy的最大公约数所得到的结果值,或者在Sy=1或者Sy与Ny互质的情况下,可以Ey确定为等于Ny。由此,可以生成与K”[kx]相对应的Ey个变换卷积核K”[kx,ky],或者与K或K’相对应的Ex×Ey个变换卷积核K”[kx,ky]。
然后,可以分别针对每个变换卷积核K”[kx,ky],以将D2上的每Ny个的连续的切片在深度上拼接到一起的方式,在D2上对每个K”[kx,ky]进行折叠,以针对每个变换卷积核K”[kx,ky]生成相应的折叠卷积核K”’[kx,ky],使得每个K”’[kx,ky]中的在D2上的第iky×Ny+jky个切片的所有Cy个通道的数据分别对应于K”[kx,ky]的在D2上的第iky个切片的从第jky×Cy个通道开始的连续的Cy个通道的数据,其中,iky为大于或等于0的整数,jky为大于或等于0且小于Ny的整数。
同样,也可以根据Ey、Sy、Ny以及K’在D2上的维度值Vy来确定每个变换卷积核K”[kx,ky]在D2上的期望维度值EVy。例如,可以根据等式
Figure BDA0001484778890000121
来确定每个变换卷积核K”[kx,ky]在D2上的期望维度值EVy。如果变换卷积核K”[kx,ky]在D2上的维度值小于EVy,则可以通过在变换卷积核K”[kx,ky]的在D2上的结束边界处附加零切片来调整的K”[kx,ky],使得调整后的变换卷积核K”[kx,ky]在D2上的维度值等于EVy,然后可以在D2上对调整后的变换卷积核K”[kx,ky]进行折叠,以生成相应的折叠卷积核K”’[kx,ky]。
然后,可以将所获得的Ex×Ey个折叠卷积核K”’[kx,ky]作为最终的折叠卷积核。
图5示出与图3中的FD”相对应地针对图4中的包含4个宽度切片的卷积核K’在宽度上折叠的示例。如图5所示,由于Nx=2并且Sx=1,所以可以确定与K’相对应的变换卷积核的数量为2。然后,通过分别在K’的左侧和右侧填充0个和2个零切片KA(变换1)来获得调整后的变换卷积核K’[0],并且通过分别在K’的左侧和右侧填充1个零切片KA(变换2)来获得调整后的变换卷积核K’[1],其中,调整后的变换卷积核K’[0]和K’[1]的宽度均为
Figure BDA0001484778890000122
然后,对于K’[0],可以通过将KS1拼接到KP的后面,将KS3拼接到KS2的后面,并且将KA拼接到KA的后面,来生成折叠卷积核K”[0];对于K’[1],可以通过将KP拼接到KA的后面,将KS2拼接到KS1的后面,并且将KA拼接到KS3的后面,来生成折叠卷积核K”[1]。K”[0]和K”[1]中的每一个的宽度、高度和深度分别为3、3和6。
然后,可以继续对K”[0]和K”[1]中的每一个在高度上进行折叠。如图6所示,对于K”[0],由于Ny=2并且Sy=1,所以可以确定与K”[0]相对应的变换卷积核的数量为2。然后,可以通过分别在K”[0]的上侧和上侧填充0个和1个零切片KA’来获得调整后的变换卷积核K”[0,0],并且通过在K”[0]的上侧填充1个零切片KA’来获得调整后的变换卷积核K”[0,1]。类似地,针对K”[1],可以获得变换卷积核K”[1,1]和K”[1,1]。K”[0,0]、K”[0,1]、K”[1,0]和K”[1,1]中的每一个的高度为
Figure BDA0001484778890000123
然后,针对变换卷积核K”[0,0],可以通过将K”[0,0]的将KS2’拼接到KS1’的后面,并且将KA’拼接到KS3’的后面,来生成对应的折叠卷积核K”’[0,0]。类似地,可以分别针对变换卷积核K”[0,1]、K”[1,0]和K”[1,1]来生成对应的折叠卷积核K”’[0,1]、K”’[1,0]和K”’[1,1]。折叠卷积核K”’[0,1]、K”’[1,0]和K”’[1,1]中的每一个的宽度、高度和深度分别为3、2和12。
虽然图1将示例方法100的步骤S101、S105和S110示为顺序地执行,但是在另外的实施例中,可以将步骤S105拆分成两个部分,其中,一个部分对折叠特征数据执行预处理,另一个部分对原始卷积核执行预处理,并且可以使步骤S101和针对折叠特征数据的预处理在针对原始卷积核的预处理和步骤S110之后执行,或者可以使步骤S101和针对折叠特征数据的预处理与针对原始卷积核的预处理和步骤S110并行地执行。
然后,示例方法100继续到步骤S115,以使用在步骤S110中所获得的一个或多个折叠卷积核对在步骤S105中所获得的经预处理的折叠特征数据执行卷积运算。
如果在步骤S101中针对原始的未折叠特征数据FD只是在宽度和高度中的一个维度D1上按照Nx进行折叠并获得折叠特征数据FD’,则在步骤S115中,可以使用在步骤S110中所获得的Ex个折叠卷积核K”[kx],对在步骤S105中所获得的经预处理的折叠特征数据执行卷积运算。在这样的情况下,如果原始卷积核K在D1上的步长Sx的值等于Nx,则每个折叠卷积核K”[kx]在D1上的步长为1;否则,每个折叠卷积核K”[kx]在D1上的步长为Sx。另外,每个折叠卷积核K”[kx]在宽度和高度中的另一个维度D2上的步长为原始卷积核K在D2上的步长Sy
如果在步骤S101中针对FD’继续在D2上按照Ny进行折叠并获得折叠特征数据FD”,则在步骤S115中,可以使用在步骤S110中所获得的Ex×Ey个折叠卷积核K”’[kx,ky],对在步骤S105中所获得的经预处理的折叠特征数据执行卷积运算。在这样的情况下,如果原始卷积核K在D1上的步长Sx的值等于Nx,则每个折叠卷积核K”’[kx,ky]在D1上的步长为1;否则,每个折叠卷积核K”’[kx,ky]在D1上的步长为Sx。另外,如果原始卷积核K在D2上的步长Sy的值等于Ny,则每个折叠卷积核K”’[kx,ky]在D2上的步长为1;否则,每个折叠卷积核K”’[kx,ky]在D2上的步长为Sy
在一个实施例中,在步骤S115中,可以在使用所有的折叠卷积核对折叠特征数据的同一部分进行卷积之后,在D1或D2上按照折叠卷积核在D1上的步长或在D2上的步长移动所有的折叠卷积核,以对折叠特征数据的另一部分执行卷积。在对折叠特征数据的所有部分执行完卷积之后,可以获得最终的输出特征数据。
图7示出这种执行卷积的方式的一个示例。在图7的示例中,使用图6中的折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]对图4中的折叠特征数据FD”’执行卷积运算。
如图7所示,首先针对FD”’的第1行和第2行中包含(1,1)、(1,2)、(1,3)、(2,1)、(2,2)和(2,3)的部分,分别使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]执行卷积,从而分别获得输出特征数据FDO中的包括(1,1)、(2,1)、(1,2)和(2,2)的一部分数据。然后,在宽度上按照步长1(即原始卷积核K在宽度上的步长)移动四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1],以对FD”’的第1行和第2行中包含(1,2)、(1,3)、(1,4)、(2,2)、(2,3)和(2,4)的部分执行卷积,从而分别获得输出特征数据FDO中的包括(1,3)、(2,3)、(1,4)和(2,4)的一部分数据。然后,继续在宽度上按照步长1(即原始卷积核K在宽度上的步长)移动四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1],以对FD”’的第1行和第2行中包含(1,3)、(1,4)、(1,5)、(2,3)、(2,4)和(2,5)的部分执行卷积,从而分别获得输出特征数据FDO中的包括(1,5)、(2,5)、(1,6)和(2,5)的一部分数据。
在完成对FD”’的第1行和第2行的卷积之后,在高度上按照步长1(即原始卷积核K在高度上的步长)移动四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1],以便开始对FD”’的第2行和第3行执行卷积。针对FD”’的第2行和第3行执行卷积的过程与使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]对FD”’的第1行和第2行执行卷积的过程相似,在此不再赘述。
在使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]对FD”’执行完卷积之后,获得最终的输出特征数据FDO。对于输出特征数据FDO的最后一行的数据(4,1)、(4,2)、(4,3)、(4,4)、(4,5)和(4,6),可以根据情况保留或舍弃。例如,针对如图2所示的原始的未折叠特征数据FD,如果期望使用如图4所示的原始卷积核K执行卷积后获得具有3行的输出特征数据(相应地,在高度上对FD不做填充),则可以舍弃输出特征数据FDO的最后一行的数据(4,1)、(4,2)、(4,3)、(4,4)、(4,5)和(4,6)。
在卷积层的权重参数具有多个卷积核的情况下,图7的示例中的输出特征数据FDO可以对应于最终的输出特征数据的一个通道上的数据。
在另外的实施例中,也可以分别使用每个折叠卷积核对整个折叠特征数据进行卷积。在这样的情况下,可以不必修改用于硬件的卷积指令。然而,如果一个原始卷积核对应于多个折叠卷积核,则使用每个折叠卷积核所获得的部分结果将分布在不同的通道上。在将输出特征数据提供给卷积神经网络的下一层或者作为整个卷积神经网络的最终输出之前,可以重新组织或展开分布在不同的通道上的部分结果,以获得在一个通道上的完整的输出结果。
图8示出使用这种方式执行卷积的一个示例。与图7的示例不同,在图8的示例中,分别使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]中的每一个对整个FD”’执行卷积。如图8所示,使用每个折叠卷积核只能获得输出特征数据FDO的部分数据。例如,在使用K”’[0,0]对FD”’执行卷积之后,只能获得输出特征数据FDO中的包括(1,1)、(1,3)、(1,5)、(3,1)、(3,3)和(3,5)的一部分数据。可以将使用各个折叠卷积核所获得的部分数据组织在一起,以获得完整的输出特征数据FDO。同样,在卷积层的权重参数具有多个卷积核的情况下,图8的示例中的输出特征数据FDO可以对应于最终的输出特征数据的一个通道上的数据。
通过对特征数据和卷积核进行折叠并使用所得到的折叠特征数据和折叠卷积核执行卷积运算,能够提高通道利用率,降低缓存占用量,并且可以提高运算效率。
例如,假设处理器(例如,用于卷积运算的乘法器阵列)能够一次性处理32个通道的数据,则在使用一个5×5的卷积核对720×1280的RGB图像(通道数为3)进行卷积(宽度和高度上的步长均为1)的情况下,使用常规卷积(即,使用原始卷积核对原始未折叠特征数据执行卷积)、宽度折叠卷积(即,在宽度上按照每2个切片折叠特征数据和原始卷积核,然后执行卷积)和宽高折叠卷积(即,在宽度和高度上分别按照每2个切片折叠特征数据和原始卷积核,然后执行卷积)的运算量的比较如下面的表格1所示:
表格1
Figure BDA0001484778890000151
Figure BDA0001484778890000161
表格1的示例数据表明,通过对特征数据和卷积核进行折叠并使用所得到的折叠特征数据和折叠卷积核执行卷积运算,能够显著地减少运算量(例如,宽高折叠卷积的运算量仅为常规卷积的运算量的36%),并显著地提高有效计算率(例如,宽高折叠卷积的有效计算率相比于常规卷积提高了大约4倍)。
图9和图10示出根据本公开的实施例的执行卷积神经网络中的卷积层的运算的示例装置的框图。
如图9所示,示例装置900可以包括一个或多个处理器910。处理器910可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,例如通用CPU、GPU或者专用的神经网络处理器或加速器等。例如,处理器910可以执行根据本申请的实施例的折叠特征数据和卷积核并使用折叠特征数据和折叠卷积核执行卷积运算的方法。另外,处理器910还可以控制装置900中的其他部件,以执行所期望的功能。
处理器910可以通过总线系统和/或其他形式的连接机构(未示出)与存储器920以及I/O接口930相连。
存储器920可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。例如,在配合神经网络专用处理器使用的情况下,存储器920也可以是承载专用处理器的芯片上的RAM。存储器920可以包括用于指示装置900执行根据本申请的实施例的折叠特征数据和卷积核并使用折叠特征数据和折叠卷积核执行卷积运算的方法的程序指令。
I/O接口930可以用于向处理器910提供参数或数据并且输出经过处理器910处理的结果数据。
如图10所示,示例装置1000可以包括第一折叠器1010、预处理器1020、第二折叠器1030和运算器1040。
第一折叠器1010可以被配置为在宽度和高度中的至少一个维度上折叠提供给卷积层的未折叠特征数据,以生成折叠特征数据。在一个实施例中,第一折叠器1010可以被配置为执行例如图1所示的示例方法100的步骤S101。
预处理器1020可以被配置为对折叠特征数据和卷积层的原始卷积核执行预处理。在一个实施例中,预处理器1020可以被配置为执行例如图1所示的示例方法100的步骤S105。
第二折叠器1030可以被配置为在至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核。在一个实施例中,第二折叠器1030可以被配置为执行例如图1所示的示例方法100的步骤S110。
运算器1040可以被配置为使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。在一个实施例中,运算器1040可以被配置为执行例如图1所示的示例方法100的步骤S115。
应当理解,图9和图10所示的装置900和1000仅是示例性的,而非限制性的。根据需要,根据本申请的实施例的装置可以具有其他部件和/或结构。
除非上下文清楚地另有要求,否则贯穿说明书和权利要求书,措词“包括”、“包含”等应当以与排他性或穷尽性的意义相反的包括性的意义来解释,也就是说,应当以“包括但不限于”的意义来解释。另外,措词“在本文中”、“上文”、“下文”以及相似含义的措词在本申请中使用时应当指作为整体的本申请,而不是本申请的任何具体部分。在上下文允许时,在使用单数或复数的以上描述中的措词也可以分别包括复数或单数。关于在提及两个或多个项目的列表时的措词“或”,该措词涵盖该措词的以下解释中的全部:列表中的任何项目,列表中的所有项目,以及列表中的项目的任何组合。
本发明实施例的以上详细描述不打算是穷尽性的或者将本发明局限于上文所公开的确切形式。尽管以上出于说明的目的而描述了本发明的具体实施例和示例,但是如本领域技术人员将认识到的那样,在本发明范围内可能有各种等效的修改。例如,尽管处理或块以给定的次序呈现,但是替代的实施例可以以不同的次序执行具有这些步骤的处理或者以不同的次序采用具有这些块的系统,并且一些处理或块可以被删除、移动、添加、细分、组合和/或修改。这些处理或块中的每个可以以各种不同的方式来实现。另外,虽然处理或块有时被示为串行执行,但是替代地,这些处理或块也可以并行执行,或者可以在不同时间执行。
可以将在本文中所提供的本发明的教导应用于其他系统,而不必是上述的系统。可以组合上述的各个实施例的元件和动作,以提供另外的实施例。
虽然已经描述了本发明的一些实施例,但是这些实施例仅作为示例而呈现,而不打算限制本申请的范围。实际上,在本文中所描述的新颖方法和系统可以以多种其他形式来实施。另外,可以在不脱离本申请的范围的情况下,在本文中所描述的方法和系统的形式上做出各种省略、替换和改变。

Claims (20)

1.一种执行卷积神经网络中的卷积层的运算的方法,包括:
在宽度和高度中的至少一个维度上折叠提供给所述卷积层的未折叠特征数据,以生成折叠特征数据,其中在所述宽度和高度中的至少一个维度上的折叠的拼接数量受到执行卷积运算的硬件所支持的通道数量的限定;
对所述折叠特征数据和所述卷积层的原始卷积核执行预处理;
在所述至少一个维度上折叠经预处理的原始卷积核,以生成与所述原始卷积核相对应的一个或多个折叠卷积核,其中在所述宽度和高度中的至少一个维度上的折叠的拼接数量受到执行卷积运算的硬件所支持的通道数量的限定;以及
使用所述一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
2.根据权利要求1所述的方法,其中,在所述至少一个维度上折叠所述未折叠特征数据包括:
以将第一维度上的每Nx个的连续的切片在深度上拼接到一起的方式,在所述第一维度上对所述未折叠特征数据进行第一折叠,所述第一维度是宽度和高度中的一个,Nx为大于1的整数。
3.根据权利要求2所述的方法,其中,所述未折叠特征数据中的在所述第一维度上的第ifx*Nx+jfx个切片的所有Cx个通道的数据对应于所述第一折叠的结果的在所述第一维度上的第ifx个切片的从第jfx*Cx个通道开始的连续的Cx个通道的数据,ifx为大于或等于0的整数,jfx为大于或等于0且小于Nx的整数,Cx为大于0的整数。
4.根据权利要求2所述的方法,其中,所述预处理包括:
根据所述卷积层所指定的填充方式来确定第一填充量P1,所述第一填充量P1大于或等于0并且表示所述填充方式所要求的在所述未折叠特征数据的在所述第一维度上的起始边界处的填充量;
在所述第一折叠的结果的在所述第一维度上的起始边界处填充
Figure FDA0002362298810000011
个的零切片,
Figure FDA0002362298810000021
表示向上取整运算;以及
在所述原始卷积核的在所述第一维度上的起始边界处填充
Figure FDA0002362298810000022
个零切片。
5.根据权利要求2所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第一维度上的第一步长不等于Nx的情况下,在使用与所述原始卷积核相对应的所有折叠卷积核对经预处理的折叠特征数据的同一部分进行卷积之后,在所述第一维度上按照所述第一步长同时移动与所述原始卷积核相对应的所有折叠卷积核。
6.根据权利要求2所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第一维度上的第一步长不等于Nx并且分别使用与所述原始卷积核相对应的每个折叠卷积核对整个经预处理的折叠特征数据进行卷积的情况下,每个折叠卷积核的在所述第一维度上的步长等于所述第一步长。
7.根据权利要求2所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第一维度上的第一步长等于Nx的情况下,每个折叠卷积核的在所述第一维度上的步长为1。
8.根据权利要求2至7中的任一项所述的方法,其中,在所述至少一个维度上折叠经预处理的原始卷积核包括:
在经预处理的原始卷积核的在所述第一维度上的起始边界处分别填充kx*Sx个零切片,以生成Ex个第一变换卷积核,Sx为所述原始卷积核的在所述第一维度上的第一步长,Ex大于或等于1并且取决于Nx和Sx的值,kx为大于等于0且小于Ex的整数;以及
以将所述第一维度上的每Nx个的连续的切片在深度上拼接到一起的方式,在所述第一维度上对每个第一变换卷积核进行的第二折叠,以针对每个第一变换卷积核生成相应的第一折叠卷积核。
9.根据权利要求8所述的方法,其中,每个第一变换卷积核中的在所述第一维度上的第ikx*Nx+jkx个切片的所有Cx个通道的数据分别对应于相应的第一折叠卷积核的在所述第一维度上的第ikx个切片的从第jkx*Cx个通道开始的连续的Cx个通道的数据,ikx为大于或等于0的整数,jkx为大于或等于0且小于Nx的整数。
10.根据权利要求8所述的方法,其中,在所述至少一个维度上折叠所述未折叠特征数据还包括:
以将第二维度上的每Ny个的连续的切片在深度上拼接到一起的方式,在所述第二维度上对所述第一折叠的结果进行第三折叠,所述第二维度是宽度和高度中的另一个,Ny为大于1的整数。
11.根据权利要求10所述的方法,其中,所述第一折叠的结果中的在所述第二维度上的第ify*Ny+jfy个切片的所有Cy个通道的数据对应于所述第三折叠的结果的在所述第二维度上的第ify个切片的从第jfy*Cy个通道开始的连续的Cy个通道的数据,ify为大于或等于0的整数,jfy为大于或等于0且小于Ny的整数,Cy为大于0的整数。
12.根据权利要求10所述的方法,其中,所述预处理还包括:
根据所述卷积层所指定的填充方式来确定第三填充量P3,所述第三填充量P3大于或等于0并且表示所述填充方式所要求的在所述未折叠特征数据的在所述第二维度上的起始边界处的填充量;
在所述第三折叠的结果的在所述第二维度上的起始边界处填充
Figure FDA0002362298810000031
个的零切片,
Figure FDA0002362298810000032
表示向上取整运算;以及
在所述原始卷积核的在所述第二维度上的起始边界处填充
Figure FDA0002362298810000033
个零切片。
13.根据权利要求10所述的方法,在所述至少一个维度上折叠经预处理的原始卷积核还包括:
在每个第一折叠卷积核的在所述第二维度上的起始边界处分别填充ky*Sy个零切片,以分别针对每个第一折叠卷积核生成Ey个第二变换卷积核,Sy为所述原始卷积核的在所述第二维度上的第二步长,Ey大于或等于1并且取决于Ny和Sy的值,ky为大于等于0且小于Ey的整数;以及
以将所述第二维度上的每Ny个的连续的切片在深度上拼接到一起的方式,在所述第二维度上对每个第二变换卷积核进行的第四折叠,以针对每个第二变换卷积核生成相应的第二折叠卷积核。
14.根据权利要求13所述的方法,其中,每个第二变换卷积核中的在所述第二维度上的第iky*Ny+jky个切片的所有Cy个通道的数据分别对应于相应的第二折叠卷积核的在所述第二维度上的第iky个切片的从第jky*Cy个通道开始的连续的Cy个通道的数据,iky为大于或等于0的整数,jky为大于或等于0且小于Ny的整数。
15.根据权利要求10所述的方法,其中,执行所述卷积运算还包括:
在所述原始卷积核的在所述第二维度上的第二步长不等于Ny的情况下,在使用与所述原始卷积核相对应的所有折叠卷积核对经预处理的折叠特征数据的同一部分进行卷积之后,在所述第二维度上按照所述第二步长同时移动与所述原始卷积核相对应的所有折叠卷积核。
16.根据权利要求10所述的方法,其中,执行所述卷积运算还包括:
在所述原始卷积核的在所述第二维度上的第二步长不等于Ny并且分别使用与所述原始卷积核相对应的每个折叠卷积核对整个经预处理的折叠特征数据进行卷积的情况下,每个折叠卷积核的在所述第二维度上的步长等于所述第二步长。
17.根据权利要求10所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第二维度上的第二步长等于Ny的情况下,每个折叠卷积核的在所述第二维度上的步长为1。
18.一种执行卷积神经网络中的卷积层的运算的装置,包括:
一个或多个处理器,被配置为执行根据权利要求1至17中的任一项所述的方法。
19.一种执行卷积神经网络中的卷积层的运算的装置,包括:
第一折叠器,被配置为在宽度和高度中的至少一个维度上折叠提供给所述卷积层的未折叠特征数据,以生成折叠特征数据,其中在所述宽度和高度中的至少一个维度上的折叠的拼接数量受到执行卷积运算的硬件所支持的通道数量的限定;
预处理器,被配置为对所述折叠特征数据和所述卷积层的原始卷积核执行预处理;
第二折叠器,被配置为在所述至少一个维度上折叠经预处理的原始卷积核,以生成与所述原始卷积核相对应的一个或多个折叠卷积核,其中在所述宽度和高度中的至少一个维度上的折叠的拼接数量受到执行卷积运算的硬件所支持的通道数量的限定;以及
运算器,被配置为使用所述一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
20.一种非临时性存储介质,在其上存储有程序指令,所述程序指令在被计算装置执行时执行根据权利要求1至17中的任一项所述的方法。
CN201711212061.4A 2017-11-28 2017-11-28 执行卷积神经网络中的卷积层的运算的方法和装置 Active CN107729994B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201711212061.4A CN107729994B (zh) 2017-11-28 2017-11-28 执行卷积神经网络中的卷积层的运算的方法和装置
JP2018221331A JP6775565B2 (ja) 2017-11-28 2018-11-27 畳み込みニューラルネットワークの畳み込み層における演算を実行するための方法、装置、メモリ及びコンピュータプログラム
US16/203,031 US11822616B2 (en) 2017-11-28 2018-11-28 Method and apparatus for performing operation of convolutional layers in convolutional neural network
KR1020180149479A KR102275499B1 (ko) 2017-11-28 2018-11-28 컨볼루션 신경망에서 컨볼루션 층들의 연산을 수행하기 위한 방법 및 장치
EP18208757.7A EP3489862B1 (en) 2017-11-28 2018-11-28 Method and apparatus for performing operation of convolutional layers in convolutional neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711212061.4A CN107729994B (zh) 2017-11-28 2017-11-28 执行卷积神经网络中的卷积层的运算的方法和装置

Publications (2)

Publication Number Publication Date
CN107729994A CN107729994A (zh) 2018-02-23
CN107729994B true CN107729994B (zh) 2020-05-26

Family

ID=61218640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711212061.4A Active CN107729994B (zh) 2017-11-28 2017-11-28 执行卷积神经网络中的卷积层的运算的方法和装置

Country Status (5)

Country Link
US (1) US11822616B2 (zh)
EP (1) EP3489862B1 (zh)
JP (1) JP6775565B2 (zh)
KR (1) KR102275499B1 (zh)
CN (1) CN107729994B (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI729352B (zh) 2018-02-09 2021-06-01 宏達國際電子股份有限公司 卷積神經網路的調整方法及電子裝置
CN108984426B (zh) * 2018-08-03 2021-01-26 北京字节跳动网络技术有限公司 用于处理数据的方法和装置
CN109190758B (zh) * 2018-09-04 2021-06-15 地平线(上海)人工智能技术有限公司 用于展开卷积神经网络的张量数据的方法和装置
CN109255438B (zh) * 2018-09-17 2020-07-17 地平线(上海)人工智能技术有限公司 调整张量数据的方法和装置
CN112840356B (zh) * 2018-10-09 2023-04-11 华为技术有限公司 运算加速器、处理方法及相关设备
KR102637733B1 (ko) * 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
CN109948787B (zh) * 2019-02-26 2021-01-08 山东师范大学 用于神经网络卷积层的运算装置、芯片及方法
US10891537B2 (en) 2019-03-20 2021-01-12 Huawei Technologies Co., Ltd. Convolutional neural network-based image processing method and image processing apparatus
CN110188773B (zh) * 2019-05-24 2021-06-22 北京迈格威科技有限公司 图像处理方法及装置
TWI719512B (zh) * 2019-06-24 2021-02-21 瑞昱半導體股份有限公司 使用像素通道置亂的卷積神經網路的演算方法與系統
US12026601B2 (en) * 2019-06-26 2024-07-02 Micron Technology, Inc. Stacked artificial neural networks
US11699081B2 (en) * 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
JP7289427B2 (ja) * 2020-02-28 2023-06-12 株式会社Pros Cons プログラム、情報処理方法及び情報処理装置
CN111860780A (zh) * 2020-07-10 2020-10-30 逢亿科技(上海)有限公司 不规则卷积核卷积神经网络硬件加速系统及计算方法
CN111985618B (zh) * 2020-08-14 2024-03-05 杭州海康威视数字技术股份有限公司 3d卷积神经网络在神经网络处理器上的处理方法和装置
CN111985634B (zh) * 2020-08-21 2024-06-14 北京灵汐科技有限公司 神经网络的运算方法、装置、计算机设备及存储介质
CN111931123B (zh) * 2020-10-14 2020-12-25 南京风兴科技有限公司 边界卷积计算方法、装置、硬件加速器及计算机设备
EP4273751A1 (en) 2020-12-31 2023-11-08 Cambricon Technologies Corporation Limited Data processing apparatus and method for executing neural network model, and related products
CN112668717B (zh) * 2021-01-04 2023-06-02 哈尔滨工业大学 一种面向神经网络模型优化的数据处理方法和装置
CN112799598B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据处理方法、处理器及电子设备
CN112686377B (zh) * 2021-03-18 2021-07-02 北京地平线机器人技术研发有限公司 利用卷积硬件对特征数据进行反卷积处理的方法和装置
CN113313787B (zh) * 2021-05-31 2023-11-07 上海阵量智能科技有限公司 一种数据处理方法、装置、计算机设备和存储介质
CN114492730A (zh) * 2021-12-23 2022-05-13 北京地平线信息技术有限公司 神经网络模型的编译方法和装置、电子设备和存储介质
CN114648107A (zh) * 2022-03-10 2022-06-21 北京宏景智驾科技有限公司 神经网络输入图像点云卷积层计算的效率提升方法及电路
CN115348432B (zh) * 2022-08-15 2024-05-07 上海壁仞科技股份有限公司 数据处理方法及装置、图像处理方法、电子设备及介质
KR20240111514A (ko) * 2023-01-10 2024-07-17 삼성전자주식회사 전자 장치 및 그 제어 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003060748A2 (en) * 2002-01-10 2003-07-24 Massively Parallel Technologies, Inc. Parallel processing systems and method
CN106447030A (zh) * 2016-08-30 2017-02-22 深圳市诺比邻科技有限公司 卷积神经网络的计算资源优化方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6469290A (en) 1987-09-09 1989-03-15 Mitsubishi Heavy Ind Ltd Current command generator circuit
US5745872A (en) * 1996-05-07 1998-04-28 Texas Instruments Incorporated Method and system for compensating speech signals using vector quantization codebook adaptation
JP4957150B2 (ja) * 2006-09-27 2012-06-20 株式会社ナカヨ通信機 Ip内線電話システム、主装置、ip内線電話機、および呼出制御方法
US8634604B2 (en) * 2008-05-05 2014-01-21 Sonavation, Inc. Method and system for enhanced image alignment
US10402720B2 (en) * 2014-07-16 2019-09-03 Qualcomm Incorporated Decomposing convolution operation in neural networks
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20160358099A1 (en) * 2015-06-04 2016-12-08 The Boeing Company Advanced analytical infrastructure for machine learning
US10405739B2 (en) 2015-10-23 2019-09-10 International Business Machines Corporation Automatically detecting eye type in retinal fundus images
US10706348B2 (en) * 2016-07-13 2020-07-07 Google Llc Superpixel methods for convolutional neural networks
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003060748A2 (en) * 2002-01-10 2003-07-24 Massively Parallel Technologies, Inc. Parallel processing systems and method
CN106447030A (zh) * 2016-08-30 2017-02-22 深圳市诺比邻科技有限公司 卷积神经网络的计算资源优化方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A Streaming Accelerator for Deep Convolutional Neural Networks with Image and Feature Decomposition for Resource-limited System Applications;Yuan Du 等;《arXiv:1709.05116》;20170915;1-5 *
High Performance Implementation of 3D Convolutional Neural Networks on a GPU;Qiang Lan 等;《Computational Intelligence and Neuroscience》;20171108;第2017卷;摘要,正文第3页左栏第2段,右栏第3-4段,第4页右栏第1-2段,第5页左栏第1,4段,右栏第1段,附图1-2 *
Optimizing Memory Efficiency for Convolution Kernels on Kepler GPUs;Xiaoming Chen 等;《2017 54th ACM/EDAC/IEEE Design Automation Conference(DAC)》;20170622;1-6 *
Parallel Multi Channel Convolution using General Matrix Multiplication;Aravind Vasudevan 等;《2017 IEEE 28th International Conference on Application-specific Systems,Architectures and Processors (ASAP)》;20170712;1-6 *

Also Published As

Publication number Publication date
US20190163716A1 (en) 2019-05-30
US11822616B2 (en) 2023-11-21
KR20190062304A (ko) 2019-06-05
EP3489862B1 (en) 2021-08-11
KR102275499B1 (ko) 2021-07-08
JP6775565B2 (ja) 2020-10-28
CN107729994A (zh) 2018-02-23
EP3489862A1 (en) 2019-05-29
JP2019125351A (ja) 2019-07-25

Similar Documents

Publication Publication Date Title
CN107729994B (zh) 执行卷积神经网络中的卷积层的运算的方法和装置
CN107832842B (zh) 针对折叠特征数据执行卷积运算的方法和装置
CN107844827B (zh) 执行卷积神经网络中的卷积层的运算的方法和装置
EP3486844A1 (en) Method and apparatus for adapting feature data in convolutional neural network
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
DE102005008824B4 (de) Verfahren zum Registrieren von zwei Bildern unter Verwendung eines Graphikprozessors und die computerlesbare Programmspeichervorrichtung hierfür
DE112020004625T5 (de) Transponierte faltung mit systolischem array
CN109190758B (zh) 用于展开卷积神经网络的张量数据的方法和装置
KR20190051697A (ko) 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
CN110458957A (zh) 一种基于神经网络的图像三维模型构建方法及装置
US10186068B2 (en) Method, apparatus and system for rendering an image
DE112017001703T5 (de) Verfahren und Vorrichtung zum effizienteren Ray-Tracing von instanziierter Geometrie
Wu et al. A new approach to compute cnns for extremely large images
Mazumdar et al. A hardware-friendly bilateral solver for real-time virtual reality video
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung
CN111047025A (zh) 一种卷积计算方法及装置
CN114662647A (zh) 处理用于神经网络的层的数据
US20230075264A1 (en) Methods and devices for efficient general deconvolution implementation on hardware accelerator
US11842273B2 (en) Neural network processing
Karas et al. Deconvolution of huge 3-D images: parallelization strategies on a multi-GPU system
CN118202381A (zh) 图像处理设备及其操作方法
KR20240102904A (ko) 이중선형 업샘플링 연산 장치 및 방법
KR20230059718A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치
DE102017103637A1 (de) System, Verfahren und Computerprogrammprodukt zum Erzeugen eines oder mehrerer Werte für einen Signal-Patch unter Verwendung von benachbarten Patches, welche abhängig von einer Distanz aufgesammelt werden, die dynamisch von einer Rauschverteilung des Signal-Patches berechnet wird

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
TA01 Transfer of patent application right

Effective date of registration: 20180817

Address after: 210046 20 A, Xingzhi science and Technology Park, Xingzhi Road, Nanjing economic and Technological Development Zone, Jiangsu

Applicant after: Nanjing horizon Robot Technology Co., Ltd.

Address before: 100080 Beijing Haidian District Zhongguancun Avenue 1 3 3 317

Applicant before: Beijing horizon information technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant