CN110852414B - 高精度低位卷积神经网络 - Google Patents
高精度低位卷积神经网络 Download PDFInfo
- Publication number
- CN110852414B CN110852414B CN201910462515.6A CN201910462515A CN110852414B CN 110852414 B CN110852414 B CN 110852414B CN 201910462515 A CN201910462515 A CN 201910462515A CN 110852414 B CN110852414 B CN 110852414B
- Authority
- CN
- China
- Prior art keywords
- binary
- filter
- results
- convolution
- activation
- 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
Classifications
-
- 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
- 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/04—Architecture, e.g. interconnection topology
-
- 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/048—Activation functions
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- 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
-
- 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/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明题为“高精度低位卷积神经网络”。本文描述了用于生成并训练高精度低位卷积神经网络(CNN)的系统、方法和计算机可读介质。使用一个或多个二元滤波器来模拟CNN的每个卷积层的滤波器,并且使用二元激活的线性组合来模拟实值激活函数。更具体地,使用缩放的二元滤波器来模拟非1×1滤波器(例如,k×k滤波器,其中k>1),并且使用二元滤波器的线性组合来模拟1×1滤波器。因此,针对模拟不同权重(例如,1×1滤波器对非1×1滤波器)而采用不同的策略。以这种方式,在高精度低位CNN的(一个或多个)卷积层中执行的卷积变为二元卷积,该二元卷积产生较低的计算成本,同时仍保持高性能(例如,高准确度)。
Description
背景技术
机器学习涉及生成和使用能够从数据中学习并进行预测的算法。此类算法通常通过从示例输入构建模型以便进行数据驱动的预测或决策来操作。已开发出多种机器学习方法。被称为人工神经网络(ANN)或简称神经网络(NN)的一种此类方法是受生物神经网络的结构和功能启示的学习算法。
NN包括人工神经元(节点)的互连组的分级层,其中每个节点层将下层的输出作为输入接收。深度神经网络(DNN)是一种包含一个或多个隐藏的节点层的NN。前馈NN是节点之间的连接不会形成循环的NN。也就是说,前馈NN是这样的NN,在该NN中信息仅沿一个方向从输入节点向前移动至一个或多个隐藏层(如果有的话)的节点,并最终移动到输出节点。卷积NN构成一类深度前馈NN,其包括输入层和输出层以及多个隐藏层。隐藏层通常包括卷积层、池化层、完全连接层和归一化层。本文描述了对常规CNN的技术改进,尤其是对执行高精度乘法和累积操作方面的技术改进。
发明内容
在本公开的一个或多个示例性实施方案中,公开了一种用于训练高精度低位卷积神经网络(CNN)的方法。该方法包括接收对CNN的卷积层的输入,其中卷积层包括1×1滤波器。该方法还包括使用二元激活的线性组合来模拟实值激活函数,并且使用每个二元激活来处理输入以获得一组二元激活结果。该方法另外包括使用二元滤波器的线性组合来模拟1×1滤波器、将每个二元激活结果与二元滤波器的线性组合卷积以获得一组卷积结果,以及对卷积结果求和以获得卷积层的输出。
在一个或多个示例性实施方案中,输入为第一输入,卷积层为第一卷积层,该组二元激活结果为第一组二元激活结果,并且该组卷积结果为第一组卷积结果,并且该方法还包括接收对CNN的第二卷积层的第二输入,其中第二卷积层包含非1×1滤波器,并且使用每个二元激活处理第二输入以获得第二组二元激活结果。该方法另外包括使用缩放的二元滤波器来模拟非1×1滤波器,将第二组二元激活结果中的每个二元激活结果与缩放的二元滤波器卷积以获得第二组卷积结果,以及对第二组卷积结果中的卷积结果求和以获得第二卷积层的输出。
在本公开的一个或多个其它示例性实施方案中,公开了一种用于训练高精度低位卷积神经网络(CNN)的系统。该系统包括存储计算机可执行指令的至少一个存储器和被配置为访问该至少一个存储器并执行计算机可执行指令以执行一组操作的至少一个处理器。该操作包括接收对CNN的卷积层的输入,其中该卷积层包括1×1滤波器。该操作还包括使用二元激活的线性组合来模拟实值激活函数,并且使用每个二元激活来处理输入以获得一组二元激活结果。该操作还包括使用二元滤波器的线性组合来模拟1×1滤波器,将每个二元激活结果与二元滤波器的线性组合卷积以获得一组卷积结果,并且对卷积结果求和以获得该卷积层的输出。
在一个或多个示例性实施方案中,输入为第一输入,卷积层为第一卷积层,该组二元激活结果为第一组二元激活结果,并且该组卷积结果为第一组卷积结果,并且至少一个处理器被进一步配置为执行计算机可执行指令以执行附加操作,该附加操作包括接收对CNN的第二卷积层的第二输入,其中第二卷积层包括非1×1滤波器,以及使用二元激活处理第二输入以获得第二组二元激活结果。附加操作还包括使用缩放的二元滤波器来模拟非1×1滤波器,将第二组二元激活结果中的每个二元激活结果与经缩放的二元滤波器卷积以获得第二组卷积结果,并且将第二组卷积结果中的卷积结果求和以获得第二卷积层的输出。
在本公开的一个或多个其它示例性实施方案中,公开了用于训练高精度低位卷积神经网络(CNN)的计算机程序产品。该计算机程序产品包括可由处理电路读取的非暂态存储介质,该存储介质存储可由处理电路执行以使得执行方法的指令。该方法包括接收对CNN的卷积层的输入,其中卷积层包括1×1滤波器。该方法还包括使用二元激活的线性组合来模拟实值激活函数,并且使用每个二元激活来处理输入以获得一组二元激活结果。该方法还包括使用用于输入的每个通道的二元滤波器的线性组合来模拟1×1滤波器,将每个二元激活结果与二元滤波器的线性组合卷积以获得一组卷积结果,并且对卷积结果求和以获得该卷积层的输出。
在一个或多个示例性实施方案中,输入为第一输入,卷积层为第一卷积层,该组二元激活结果为第一组二元激活结果,并且该组卷积结果为第一组卷积结果,并且由执行存储的指令的处理电路执行的该方法还包括接收对CNN的第二卷积层的第二输入,其中第二卷积层包括非1×1滤波器,以及使用每个二元激活处理第二输入以获得第二组二元激活结果。附加操作还包括使用缩放的二元滤波器来模拟非1×1滤波器,将第二组二元激活结果中的每个二元激活结果与经缩放的二元滤波器卷积以获得第二组卷积结果,并且将第二组卷积结果中的卷积结果求和以获得第二卷积层的输出。
根据一个或多个示例性实施方案,通过解决优化问题以确定经缩放的二元滤波器的标量值和对应的二元滤波器来模拟卷积层的非1×1滤波器。
根据一个或多个示例性实施方案,通过解决优化问题以确定二元滤波器的线性组合的一组标量值和一组对应二元滤波器来模拟卷积层的1×1滤波器。
根据一个或多个示例性实施方案,执行反向传播以调节经缩放的二元滤波器的权重和二元滤波器的线性组合的权重,并且进一步执行反向传播以调节二元激活的线性组合的一个或多个二元激活。
根据一个或多个示例性实施方案,通过至少部分地使用产生二元输出的指示函数来将二元化函数施加到实值激活函数,使用二元激活的线性组合来模拟实值激活函数。
根据一个或多个示例性实施方案,输入包括车辆的周围环境的图像,并且在可操作地耦接到车辆的嵌入式设备上实施经训练的高精度低位CNN。根据一个或多个示例性实施方案,高精度低位CNN被施加于该图像以执行对象识别,并且在可操作地耦接到车辆的显示器上呈现对象识别的结果的通知。
结合附图,从下面的详细描述中,本公开的上述特征和优点,以及其它特征和优点将变得显而易见。
附图说明
其它特征、优点和细节仅以举例的方式出现在以下具体实施方式中,具体实施方式参考附图,其中:
图1示意性地描绘了根据本公开的一个或多个示例性实施方案的高精度低位卷积神经网络(CNN)内的使用缩放的二元滤波器来模拟k×k滤波器和使用二元滤波器的线性组合来模拟1×1滤波器;
图2示意性地描绘了根据本公开的一个或多个示例性实施方案的CNN的一部分;
图3示意性地描绘了根据一个或多个示例性实施方案的以高精度低位CNN实现的图2中所描绘的CNN的该部分,其中使用二元滤波器的线性组合来模拟1×1滤波器,使用缩放的二元滤波器来模拟k×k滤波器,以及使用二元激活的线性组合来模拟实值激活函数;
图4为示出根据一个或多个示例性实施方案的高精度低位CNN的混合示意性框/数据流程图;
图5为根据本公开的一个或多个示例性实施方案的高精度低位CNN的示例性操作方法的工艺流程图;并且
图6为被配置为实现本公开的一个或多个示例性实施方案的示例性计算设备的示意图。
具体实施方式
以下描述本质上仅是示例性的,并非旨在限制本公开、其应用或用途。应当理解,在整个附图中,对应的附图标号指示类似的或对应的部件和特征。如本文所用,术语模块是指可包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电子电路、处理器(共享、专用或组)和执行一个或多个软件或固件程序的存储器、组合逻辑电路和/或提供所述功能的其它合适部件的处理电路。
本文公开了用于生成和训练高精度低位卷积神经网络(CNN)的系统、方法和计算机可读介质。在示例性实施方案中,使用二元滤波器来模拟CNN的卷积层的滤波器,并且使用二元激活的线性组合来模拟实值激活函数。更具体地,根据示例性实施方案,使用缩放的二元滤波器来模拟非1×1滤波器(例如,k×k滤波器,其中k>1),并且使用二元滤波器的线性组合来模拟1×1滤波器。因此,根据示例性实施方案,采用不同的策略来模拟不同的权重(例如,1×1滤波器对非1×1滤波器)。这样,根据示例性实施方案的在高精度低位CNN的卷积层中执行的卷积变成二元卷积,其产生较低的计算成本,同时仍保持高性能(例如,高分类准确度)。如本文所用,假设k×k滤波器具有k>1的值,并且术语k×k滤波器可与术语非1×1滤波器互换地使用。
用于降低与CNN相关联的计算成本的常规方法包括例如减小CNN内的数据表示的精度(例如,减少用于表示CNN内的数据的位的数量)。然而,这种方法导致严重的性能下降,即,精度显著降低。示例性实施方案通过提供具有比常规CNN低的计算成本但不会导致与用于降低计算成本的常规方法相关联的显著性能下降的高精度低位CNN来改善用于降低CNN的计算成本的常规方法。
具体地,根据示例性实施方案,用于模拟不同权重的不同策略(例如,使用缩放的二元滤波器来模拟非1×1滤波器以及使用二元滤波器的线性组合来模拟1×1滤波器)降低了高精度低位CNN的计算成本,而使用多个二元权重和激活的线性组合保持了所需的CNN的准确性/性能。根据示例性实施方案的由高精度低位CNN实现的较低计算成本,同时保持与高位CNN相关联的高性能(例如,期望的准确性)构成优于常规的CNN实施方式的技术效应和有益效果。
此外,根据示例性实施方案的高精度低位CNN提供优于常规CNN的附加技术有益效果,因为根据示例性实施方案的CNN可在更低成本和高速的设备诸如FPGA上实现,而在此类设备上实施常规CNN将在计算上不可行。具体地,在CNN的卷积层中执行的卷积操作包括乘法和累加(MAC)操作。通常,根据所使用的滤波器的数量,在给定的卷积层中执行数十万或数百万个此类MAC操作。典型的FPGA仅包括能够执行计算密集型MAC操作的数千个数字信号处理器(DSP)。示例性实施方案将这些MAC操作转换为一系列二元操作,并且因此允许在一个或多个FPGA上实现根据示例性实施方案的高精度低位CNN,每个FPGA可包括用于执行此类二元操作的一百万个或更多个计算单元。因此,根据示例性实施方案的高精度低位CNN通过使得能够在低成本且高速的设备诸如FPGA上实现来提供优于常规CNN的技术效应和有益效果。
此外,在常规的CNN实施方式中,由在给定的卷积层处执行的大量MAC操作生成的中间数据很大,并且可用于执行此类操作的计算资源是有限的。因此,通常必须将中间数据保存到外部存储器,因为在板上存储器可能不足够。对于既具有非常有限数量的能够执行MAC操作的计算单元(例如,DSP)也具有非常有限数量的板上存储器的设备诸如FPGA而言,情况尤其如此。然而,当在FPGA或一组FPGA上实现时,根据示例性实施方案的高精度低位CNN显著减少了计算单元和外部存储器之间数据移动。这是通过将MAC操作转换为二元操作实现的。如前所述,FPGA包括用于处理二元操作的大量计算单元,并且因此在给定的卷积层处产生的中间数据可以流水线到下一个卷积层,而不需要(或至少减少)将中间数据存储在外部存储器中。这构成了优于常规的CNN实施方式的又一技术效应和有益效果。
示例性实施方案的上述技术效应和有益效果构成对计算机技术的改进。具体地,此类技术效应和有益效果构成对基于计算机的CNN技术的改进。
图1示意性地描绘了在根据本公开的一个或多个示例性实施方案的高精度低位卷积神经网络(CNN)内使用缩放的二元滤波器来模拟k×k滤波器和使用二元滤波器的线性组合来模拟1×1滤波器。图4为示出根据一个或多个示例性实施方案的高精度低位CNN的混合示意性框/数据流程图。图5为根据本公开的一个或多个示例性实施方案的高精度低位CNN的操作的示例性方法500的工艺流程图。图1、图4和图5将在下文中彼此结合地进行描述。
虽然图1示出了使用缩放的二元滤波器来模拟k×k滤波器和使用二元滤波器的线性组合来模拟1×1滤波器,但是应当理解,对于给定激活函数和给定滤波器(1×1或k×k),在示例性实施方案中仅使用一个激活策略。也就是说,在一个示例性实施方案中,如果初始滤波器为k×k滤波器,则然后使用缩放的二元滤波器来模拟输入的所有路径(其中输入的每个路径对应于用于模拟激活函数的二元激活的线性组合的相应的二元激活),并且如果初始滤波器为1×1滤波器,则然后使用二元滤波器的线性组合来模拟输入的所有路径。此外,图5的示例性方法500使用单个卷积层和单个滤波器作为示例进行描述。然而,应当理解,可相对于任何数量的卷积层和给定卷积层中任何数量的滤波器执行方法500的一个或多个操作。
现在一起参考图1、图4和图5,在方法500的框502处,根据示例性实施方案,输入402由高精度低位CNN 400接收。在示例性实施方案中,输入402可为在CNN 400的特定卷积层处接收的具体输入102(在图1中示出)。输入102可为CNN 400的下层的输出或对CNN 400的初始卷积层的初始输入。下文将参考特定的卷积层的具体输入102来描述本发明的示例性实施方案。
在方法500的框504处,根据示例性实施方案,执行一个或多个二元激活模拟模块404的计算机可执行指令以使用二元激活的线性组合来模拟实值激活函数。使用三个二元激活Hv1、Hv2和Hv3的实值高精度激活函数的模拟值在图1中描绘出。在示例性实施方案中,每个二元激活对应于用于处理输入102的特定路径。更具体地,二元激活Hv1、Hv2和Hv3分别对应于路径130、132和134。应当理解,仅以举例的方式描绘了三个二元激活,并且可使用任何数量的二元激活来模拟实值激活函数。在示例性实施方案中,对于输入x,实值激活函数可为由f(x)=max(0,x)给出的整流器。采用整流器的单元可为整流线性单元(ReLU)。
根据示例性实施方案的用于确定模拟实值激活函数的二元激活的线性组合的数学公式如下。具体地,二元激活的线性组合可由以下给出:R≈A=β1A1+β2A2+…+βNAN,其中R为实值激活函数,并且Ai为二元激活。在示例性实施方案中,每个二元激活可由Ai=Hvi(R)给出。此外,在示例性实施方案中,二进值化函数可由给出,其中I为指示函数。在示例性实施方案中,如果hv(R)>0.5为真,那么/>并且Hv(R)=+1。另选地,如果hv(R)>0.5为假,那么/>并且Hv(R)=-1。在示例性实施方案中,hv(x)=clip(x+v,0,1),其中v为移位参数。因此,在示例性实施方案中,二元激活的前向路径由给出。
在方法500的框506处,在示例性实施方案中,使用每个二元激活(例如,Hv1、Hv2和Hv3)来处理输入102以获得对应于每个二元激活的相应的二元激活结果。每个二元激活结果合在一起构成通过使用二元激活的线性组合处理输入102而获得的一组二元激活结果。该组二元激活结果可作为二元激活模拟数据406提供给一个或多个卷积模块412,其操作将在本公开稍后更详细地描述。
再次参见图5,在方法500的框508处,根据示例性实施方案,确定卷积层的滤波器是否为1×1滤波器。响应于框508处的肯定确定,方法500前进至框510,在该框中,在示例性实施方案中,使用针对输入102的每个路径的二元滤波器的线性组合来执行一个或多个二元权重模拟模块408的计算机可执行指令以模拟1×1滤波器。在示例性实施方案中,可通过实验确定输入的路径的数量(即,用于模拟实值激活函数的二元激活的线性组合中的二元激活的数量)。如本文所用,术语权重是指包含在滤波器中的值。
图1描绘了模拟1×1滤波器的二元滤波器112的线性组合的示例表示。如图1所描绘,将相应的二元滤波器116、118、120(例如,B1、B2、B3)施加到输入114(例如,初始1×1滤波器),并且将结果分别乘以值α1、α2、α3并求和122以产生输出124。因此,输出124被施加到输入114的线性组合α1B1+α2B2+α3B3。应当理解,线性组合112可用于模拟针对输入102的每个路径的1×1滤波器。换句话讲,如果卷积层的滤波器是1×1滤波器,则可相对于每个二元激活使用模拟1×1滤波器的二元滤波器的线性组合。
根据示例性实施方案的用于确定用于输入102的每个路径的二元滤波器的线性组合的数学公式如下。具体地,根据示例性实施方案,用于模拟针对输入102的每个路径的1×1滤波器的二元滤波器的线性组合如下给出:Wi≈αi1Bi1+αi2Bi2+…+αiMBiM,其中Wi∈Rw×h×c,Bi(1...M)∈{+1,-1}w×h×c,w为初始1×1滤波器的宽度,h为初始1×1滤波器的高度,并且c为输入102的信道的数量。然后可通过解决以下优化问题来确定针对输入102的每个路径(由α*和B*给出)的每个α和每个B的值:其中B=[vec(B1),vec(B2),...,vec(BM)],w=vec(W),并且α=[α1,α2,...,αM]T。在示例性实施方案中,上方值“2”指示量|w–βα|的平方,而下方值“2”指示正确定的L2范数。在示例性实施方案中,W表示正模拟的初始高精度权重。
在示例性实施方案中,可首先计算二元滤波器Bi,并且然后可使用Bi的该计算值确定α*。例如,在示例性实施方案中,Bi可如下定义:其中并且/>其中M表示线性组合中所使用的二元滤波器的数量。然后通过解决如上所述的优化问题/>来获得量α*。
再次参见图5,如果在框508处作出否定确定—指示卷积层的滤波器为k×k滤波器(k>1)—则方法500前进至框512,在该框中,在示例性实施方案中,使用缩放的二元滤波器来执行(一个或多个)二元权重模拟模块408的计算机可执行指令以模拟k×k滤波器。每个k×k滤波器可具有任何合适的尺寸,只要k>1,包括但不限于3×3滤波器、5×5滤波器等。
图1描绘了模拟k×k滤波器的缩放的二元滤波器104的示例表示。将二元滤波器108施加到输入106(例如,初始k×k滤波器)。将二元滤波器108施加到输入106的结果缩放标量值α以产生输出110。应当理解,缩放的二元滤波器104模拟针对输入102的每个路径的k×k滤波器。
根据示例性实施方案的用于确定用于模拟针对输入102的每个路径的k×k滤波器的缩放的二元滤波器的数学公式如下。具体地,根据示例性实施方案,用于模拟针对输入102的每个路径的k×k滤波器的缩放的二元滤波器如下给出:Wi=αiBi,其中Bi∈{+1,-1}w×h×c,w为初始k×k滤波器的宽度,h为初始k×k滤波器的高度,并且c为输入102的信道的数量。然后可通过解决以下优化问题来确定针对给定的高精度权重(由α*和B*给出)的α和B的值:α*,上方值“2”指示量|W–αB|的平方,而下方值“2”指示正确定的L2范数。在示例性实施方案中,W表示正模拟的初始高精度权重。在解决上述优化问题之前,量α和B可以向量形式表示。在示例性实施方案中,用于模拟k×k滤波器的缩放的二元滤波器可被视为仅使用一个二元滤波器的线性组合模拟值的特殊情况。
在示例性实施方案中,在方法500的框512处生成的缩放的二元滤波器,或者另选地,在方法500的框510处生成的二元滤波器的线性组合可作为二元权重模拟数据410提供给一个或多个卷积模块412。在方法500的框514处,根据示例性实施方案,执行(一个或多个)卷积模块412的计算机可执行指令以将在方法500的框506处获得的每个二元激活结果用在框510处生成的1×1滤波器的模拟值或在框512处生成的k×k滤波器的模拟值进行卷积,以获得一组卷积结果。
更具体地,参见图1,在示例性实施方案中,将通过使用对应的二元激活(例如,Hv1、Hv2或Hv3)处理输入102来获得的每个二元激活结果与1×1滤波器的模拟值或k×k滤波器的模拟值(无论是哪种情形)卷积,以获得对应于每个二元激活结果的卷积结果。在示例性实施方案中,执行(一个或多个)卷积模块412的计算机可执行指令以在方法500的框516处对卷积结果进行缩放和求和以获得输出414。这在图1中示例性地描绘出,其中三个二元激活Hv1、Hv2和Hv3分别与适当的模拟权重卷积并且然后分别乘以标量β1、β2和β3,并求和126以产生输出128。
在示例性实施方案中,框514和框516处的操作的数学公式可如下给出。如果A和O分别表示输入和输出张量,那么在方法500的框514和框516执行的操作可由给出,其中整个卷积由以下模拟值给出:因此,Conv(Bm,An)表示在运行时有效执行的二元卷积。
在方法500的框518处,在示例性实施方案中,执行一个或多个反向传播模块418的计算机可执行指令以执行反向传播从而确定更新的权重/激活420。更具体地,可将高精度低位CNN 400的给定卷积层的输出414作为对CNN 400的下一个卷积层的输入提供,其中可再次执行示例性方法500。这可继续通过CNN 400的每个卷积层直到获得最后的卷积层的最终输出416为止。然后可相对于最终输出416来确定成本函数(例如,梯度),并且可执行(一个或多个)反向传播模块418的计算机可执行指令以将梯度通过CNN 400的每个卷积层反向传播从而确定更新的权重/激活420。
在示例性实施方案中,用于模拟权重的向后传播路径(例如,用于模拟(一个或多个)k×k滤波器的(一个或多个)缩放的二元滤波器和/或用于模拟(一个或多个)1×1滤波器的二元滤波器的(一个或多个)线性组合)由以下数学公式给出:其中O表示输出张量,并且W表示初始高精度权重。另外,在示例性实施方案中,用于二元激活的反向传播路径由以下数学公式给出:/>
在示例性实施方案中,高精度参数用于高精度低位CNN 400的学习阶段。具体地,在示例性实施方案中,首先对CNN进行训练以获得高精度权重,然后使用该高精度权重来初始化高精度低位CNN 400。然后在训练阶段期间对高精度低位CNN 400进行微调以获得低位模拟滤波器(权重)和模拟激活。一旦训练阶段完成,经训练的CNN 400就可用于在测试阶段期间执行分类。在测试阶段中,已学习(即,固定)所有权重和其它参数,并且到经训练的CNN400的输入逐层通过CNN 400传递直到在最后一层处获得结果为止。
图2示意性地描绘了根据本公开的一个或多个示例性实施方案的CNN的一部分。图2中所描绘的CNN的该部分包括池化层202,之后是批量归一化层204,之后是卷积层218。池化层202可提供CNN的下层的输出的降维。池化层202可以任何合适的方式提供降维,例如通过选择从下卷积层输出的一个或多个激活映射的每组权重的最大值或平均值。图2中所描绘的CNN的部分的卷积层218包括使用1×1滤波器和k×k滤波器(k>1)执行的各种卷积。具体地,在图2中所描绘的示例性实施方案中,所描绘的CNN的卷积层218包括使用1×1滤波器的卷积208、使用1×1滤波器的卷积210、使用k×k滤波器的卷积212和使用1×1滤波器的卷积214。更具体地,将卷积210的结果作为对卷积212的输入提供,并且将卷积212的结果作为对卷积214的输入提供。同样将卷积208的结果也作为对卷积214的输入提供。然后将卷积214的结果与激活函数206的结果(示例性地描绘为ReLU)并置以获得卷积层218的输出。
图3示意性地描绘了图2中所描绘的CNN的该部分其以根据一个或多个示例性实施方案的高精度低位CNN(例如,CNN 400)实现。池化层202和批量归一化层204分别由池化层302和批量归一化层304表示。实值激活函数206被示例性地分别由对应于路径320和322的二元激活Hv1和Hv2模拟。应当理解,仅以举例的方式示出了两个二元激活,并且可使用任意数量的二元激活来模拟激活函数206。
在示例性实施方案中,1×1卷积208由二元滤波器306的线性组合模拟,其中二元滤波器306A、二元滤波器306B乘以相应的标量并求和306C以产生结果。相似地,1×1卷积210由二元滤波器308的线性组合模拟,其中二元滤波器308A、二元滤波器308B乘以相应的标量并求和308C以产生结果。将模拟的卷积308的结果作为对模拟k×k卷积212的缩放二元滤波器310的输入提供。缩放的二元滤波器310将二元滤波器310A乘以标量以产生结果。然后将模拟卷积306的结果与缩放的二元滤波器310的结果并置312,并且将该结果作为对二元滤波器314的另一线性组合的输入提供,该二元滤波器314模拟1×1卷积214,并且其中二元滤波器314A、314B乘以相应的标量并求和314C以产生结果。然后将模拟卷积314的结果与二元激活Hv1的结果并置316(例如,卷积)。
在示例性实施方案中,相对于二元激活Hv2(二元激活Hv2的路径322)执行等效过程。更具体地,在示例性实施方案中,提供了二元滤波器324的线性组合,其等同于二元滤波器306的线性组合并且产生相同的结果。此外,在示例性实施方案中,提供了二元滤波器326的线性组合,其等同于二元滤波器308的线性组合并且产生相同的结果。将二元滤波器326的线性组合的结果作为对缩放的二元滤波器328的输入提供,在示例性实施方案中,该二元滤波器328等同于缩放的二元滤波器310并产生相同的结果。将缩放的二元滤波器328的结果和二元滤波器324的线性组合的结果并置330(例如,卷积)并将结果作为对二元滤波器332的线性组合的输入提供。在示例性实施方案中,二元滤波器332的线性组合等同于二元滤波器314的线性组合,并且产生相同的结果。然后将模拟卷积332的结果与二元激活Hv2的结果并置334(例如,卷积)。然后将Hv1和Hv2与对应的模拟卷积进行卷积的结果分别乘以标量β1和β2并求和318。然后可将所得的和318作为对下一个卷积层的输入提供。
上文已经描述了本公开的一个或多个示例性实施方案。上述实施方案仅仅是说明性的并且在本公开的范围并非旨在以任何方式进行限制。因此,本文所公开的实施方案的变型、修改形式和等同形式也在本公开的范围内。
图6为根据本公开的一个或多个示例性实施方案的被配置为实现高精度低位CNN(例如,CNN 400)的一个或多个高精度低位CNN服务器602的示例性配置的示意图。虽然本文可以单数形式描述高精度低位CNN服务器602,但应当理解,可提供高精度低位CNN服务器602的多个实例,并且与高精度低位CNN服务器602有关的功能可分布在此类多个实例之间。
在示例性配置中,高精度低位CNN服务器602可包括一个或多个处理器((一个或多个)处理器)604、一个或多个存储器设备610(在本文中一般称为存储器606)、一个或多个输入/输出(“I/O”)接口608、一个或多个网络接口610和数据存储装置614。高精度低位CNN服务器602还可包括一个或多个总线612,该一个或多个总线602功能性地耦合高精度低位CNN服务器602的各种部件。
(一个或多个)总线612可包括系统总线、存储器总线、地址总线或消息总线中的至少一者,并且可允许在高精度低位CNN服务器602的各种部件之间交换信息(例如,数据(包括计算机可执行代码)、信令等)。(一个或多个)总线612可包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等等。(一个或多个)总线612可与任何合适的总线架构相关联,包括但不限于工业标准架构(ISA)、微通道架构(MCA)、增强ISA(EISA)、视频电子标准协会(VESA)架构、加速图形端口(AGP)架构、外设部件互连(PCI)架构、PCI-Express架构、个人计算机内存卡国际协会(PCMCIA)架构、通用串行总线(USB)架构等等。
高精度低位CNN服务器602的存储器606可包括易失性存储器(当提供电力时保持其状态的存储器)诸如随机存取存储器(RAM)和/或非易失性存储器(即使未提供电力也维持其状态的存储器)诸如只读存储器(ROM)、闪存存储器、铁电RAM(FRAM)等。如本文所用的术语持久数据存储装置可包括非易失性存储器。在某些示例性实施方案中,易失性存储器可启用比非易失性存储器更快的读/写访问。然而,在某些其它示例性实施方案中,某些类型的非易失性存储器(例如,FRAM)可实现比某些类型的易失性存储器更快的读/写访问。
在各种实施方式中,存储器606可包括多种不同类型的存储器,诸如各种类型的静态随机存取存储器(SRAM)、各种类型的动态随机存取存储器(DRAM)、各种类型的不可改变ROM和/或ROM的可写入变体,诸如可电擦除的可编程只读存储器(EEPROM)、闪存存储器等。存储器606可包括主存储器以及各种形式的高速缓存存储器,诸如(一个或多个)指令高速缓存、(一个或多个)数据高速缓存、(一个或多个)转译后备缓冲器(TLB)等。另外,高速缓存存储器诸如数据高速缓存可为被组织为一个或多个高速缓存级别(L1、L2等)的分级结构的多级高速缓存。
数据存储装置614可包括可移除的存储装置和/或不可移除的存储装置,包括但不限于磁存储装置、光盘存储装置和/或胶带存储装置。数据存储装置614可提供计算机可执行指令和其它数据的非易失性存储。如本文所用,可移除的和/或不可移除的存储器606和数据存储装置614为如本文所用的术语计算机可读存储介质(CRSM)的示例。
数据存储装置614可存储可加载到存储器606中并且可由(一个或多个)处理器604执行以使得(一个或多个)处理器604执行或启动各种操作的计算机可执行代码、指令等。数据存储装置614可另外存储可被复制到存储器606以供(一个或多个)处理器604在执行计算机可执行指令期间使用的数据。此外,由(一个或多个)处理器604执行计算机可执行指令而生成的输出数据可初始地存储在存储器606中,并且最终可被复制到用于非易失性存储的数据存储装置614。
更具体地,数据存储装置614可存储一个或多个操作系统(O/S)616;一个或多个数据库管理系统(DBMS)618,其被配置为访问存储器606和/或一个或多个数据存储装置628;以及一个或多个程序模块、应用程序、引擎、计算机可执行代码、脚本等,诸如例如一个或多个二元权重模拟模块620、一个或多个二元激活模拟模块622、一个或多个卷积模块624和一个或多个反向传播模块626。被描绘为存储在数据存储装置614中的部件中的任一者可包括软件、固件和/或硬件的任何组合。软件和/或固件可包括计算机可执行代码、指令等,其可被加载到存储器606以供(一个或多个)处理器604中的一个或多个执行以执行与例如在图4中描绘的相应命名的引擎或模块有关的先前描述的操作中的任一者。
尽管在图4中未描绘,但是数据存储装置614还可存储由高精度低位CNN服务器602的部件所利用的各种类型的数据(例如,被描绘为存储在(一个或多个)数据存储装置628中的任何数据)。可将存储在数据存储装置614中的任何数据加载到存储器606中,以供(一个或多个)处理器604在执行计算机可执行代码时使用。此外,可将存储在数据存储装置614中的任何数据潜在地存储在(一个或多个)数据存储装置628中,并且可经由DBMS 618访问并加载到存储器606中,以供(一个或多个)处理器604在执行计算机可执行指令、代码等时使用。
(一个或多个)处理器604可被配置为访问存储器606并执行加载在其中的计算机可执行指令。例如,(一个或多个)处理器604可被配置为执行高精度低位CNN服务器602的各种程序模块、应用程序、引擎等的计算机可执行指令,以引起或促进根据本公开的一个或多个实施方案执行各种操作。(一个或多个)处理器604可包括能够接受作为输入的数据,根据所存储的计算机可执行指令处理输入数据以及生成输出数据的任何合适的处理单元。(一个或多个)处理器604可包括任何类型的合适的处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(RISC)微处理器、复杂指令集计算机(CISC)微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、数字信号处理器(DSP)等。另外,(一个或多个)处理器604可具有任何合适的微架构设计,该微架构设计包括任何数量的组成部件,诸如例如寄存器、复用器、算术逻辑单元、用于控制对高速缓存存储器的读/写操作的高速缓存控制器、分支预测器等。(一个或多个)处理器604的微架构设计可能够支持多种指令集中的任一种。
现在参考被描绘为存储在数据存储装置614中的其它示例性部件,可将O/S 616从数据存储装置614加载到存储器606中,并且可提供在高精度低位CNN服务器602上执行的其它应用软件与高精度低位CNN服务器602的硬件资源之间的接口。更具体地,O/S 616可包括用于管理高精度低位CNN服务器602的硬件资源并且用于向其它应用程序提供公共服务(例如,管理各种应用程序之间的存储器分配)的一组计算机可执行指令。在某些示例性实施方案中,O/S 616可控制被描绘为存储在数据存储装置614中的一个或多个程序模块的执行。O/S 616可包括现在已知的或可在将来开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统或任何其它专有或非专有操作系统。
DBMS 618可加载到存储器606中,并且可支持用于访问、检索、储存和/或操纵存储在存储器606中的数据、存储在数据存储装置614中的数据和/或存储在(一个或多个)数据存储装置630中的数据的功能。DBMS618可使用多种数据库模型(例如,关系模型、对象模型等)中的任一种,并且可支持多种查询语言中的任一种。DBMS 618可访问在一个或多个数据模式中表示并存储在任何合适的数据存储库中的数据。
(一个或多个)数据存储装置628可包括但不限于数据库(例如,关系数据库、面向对象的数据库等)、文件系统、平面文件、其中数据存储在计算机网络的不止一个节点上的分布式数据存储装置、对等网络数据存储装置等。(一个或多个)数据存储库628可存储各种类型的数据,包括但不限于图4中描绘的类型的数据,诸如二元权重模拟数据410、二元激活模拟数据406、中间数据(例如,卷积并求和的输出414)等等。应当理解,在某些示例性实施方案中,(一个或多个)数据存储装置628中的任一个和/或被描述为驻留在其上的数据中的任一者可另外地或另选地被存储在数据存储装置614中。
现在参见高精度低位CNN服务器602的其它示例性部件,(一个或多个)输入/输出(I/O)接口608可有利于高精度低位CNN服务器602从一个或多个I/O设备接收输入信息以及从高精度低位CNN服务器602向一个或多个设备输出信息。I/O设备可包括多种部件中的任一种,诸如具有触摸表面或触摸屏的显示器或显示屏;用于产生声音的音频输出设备诸如扬声器;音频捕获设备,诸如麦克风;图像和/或视频捕获设备,诸如相机;触觉单元等。这些部件中的任一个可被集成到高精度低位CNN服务器602中或可为独立的。I/O设备还可包括例如任何数量的外围设备诸如数据存储设备、打印设备等。
(一个或多个)I/O接口608还可包括用于外部外围设备连接的接口,诸如通用串行总线(USB)、FireWire、Thunderbolt、以太网端口或可连接到一个或多个网络的其它连接协议。(一个或多个)I/O接口608还可包括与一个或多个天线的连接,以经由无线局域网(WLAN)(诸如Wi-Fi)无线电部件、蓝牙和/或无线网络无线电部件(诸如能够与无线通信网络诸如长期演进(LTE)网络、WiMAX网络、3G网络等通信的无线电部件)连接到一个或多个网络。
高精度低位CNN服务器602还可包括一个或多个网络接口610,高精度低位CNN服务器602可经由该网络接口610与多种其它系统、平台、网络、设备等中的任一个通信。(一个或多个)网络接口610可经由一个或多个网络来实现例如与一个或多个其它设备的通信,该一个或多个网络可包括但不限于任何一种或多种不同类型的通信网络,诸如电缆网络、公共网络(例如,互联网)、专用网络(例如,帧中继网络)、无线网络、蜂窝网络、电话网络(例如,公共交换电话网络)或任何其它合适的专用或公共分组交换或电路交换网络。(一个或多个)此类网络可具有与其相关联的任何合适的通信范围,并且可包括例如全球网络(例如,互联网)、城域网(MAN)、广域网(WAN)、局域网(LAN)或个人局域网(PAN)。此外,(一个或多个)此类网络可包括用于通过任何合适类型的介质传输网络流量的通信链路和相关联的联网设备(例如,链路层交换机、路由器等),该任何合适类型的介质包括但不限于同轴电缆、双绞线(例如,双绞铜线)、光纤、混合纤维同轴(HFC)介质、微波介质、射频通信介质、卫星通信介质或它们的任何组合。
应当理解,图6中被描绘为被存储在数据存储装置614(或在图4中描绘)的引擎/模块仅为示例性的而非穷举性的,并且被描述为被任何特定引擎或模块支持的处理可另选地分布在多个引擎、模块等中,或由不同的引擎、模块等执行。此外,可提供各种程序模块、脚本、插件、应用程序编程接口(API)或任何其它合适的计算机可执行代码,该代码以本地方式托管在高精度低位CNN服务器602上并且/或者托管在可经由一个或多个网络访问的(一个或多个)其它计算设备上,以支持由图4和图6描绘的引擎/模块提供的功能和/或附加或替代功能。此外,该功能可被不同地模块化,使得被描述为由图4和图6中所描绘的引擎/模块的集合共同支持的处理可通过较少或更多数量的引擎或程序模块来执行,或者被描述为被任何特定引擎或模块支持的功能可至少部分地由另一个引擎或程序模块支持。此外,支持本文所述功能的引擎或程序模块可形成一个或多个应用程序的一部分,该一个或多个应用程序可根据任何合适的计算模型诸如例如客户端服务器模型、对等模型等在高精度低位CNN服务器602的任何数量的设备上执行。此外,被描述为由图4和图6中所描绘的引擎/模块中的任一者支持的功能中的任一者可至少部分地在任何数量的设备上的硬件和/或固件中实现。
还应当理解,在不脱离本公开的范围的情况下,高精度低位CNN服务器602可包括替代的和/或附加的硬件、软件或固件部件,这些硬件、软件或固件部件超出描述或描绘的那些。更具体地,应当理解,被描述成形成高精度低位CNN服务器602的一部分的软件、固件或硬件部件仅是示例性的,并且在各种实施方案中可不存在一些部件或者可提供附加部件。尽管已将各种示例性引擎/模块描绘和描述为存储在数据存储装置614中的软件引擎或程序模块,但应当理解,被描述为由引擎或模块支持的功能可通过硬件、软件和/或固件的任何组合来实现。还应当理解,在各种实施方案中,上述引擎或模块中的每种可表示所支持功能的逻辑分区。该逻辑分区为便于说明功能而描绘,并且可能并不是用于实现该功能的软件、硬件和/或固件的代表性结构。因此,应当理解,在各种实施方案中,被描述为由特定引擎或模块提供的功能可至少部分地由一个或多个其它引擎或模块提供。此外,在某些实施方案中,一个或多个所描绘的引擎或模块可不存在,而在其它实施方案中,可存在未描绘的附加引擎或模块,并且可支持所述功能和/或附加功能的至少一部分。此外,虽然某些引擎模块可被描绘或描述为另一个引擎或模块的子引擎或子模块,但在某些实施方案中,此类引擎或模块可作为独立引擎或模块或作为其它引擎或模块的子引擎或子模块提供。
图5的方法500的一个或多个操作可由一个或多个高精度低位CNN服务器602执行,该高精度低位CNN服务器602具有图6中描绘的示例性配置,或者更具体地,方法500的一个或多个操作可由可在(一个或多个)此类服务器602上执行的一个或多个引擎、程序模块、应用程序等执行。然而,应当理解,此类操作可结合许多其它系统配置来实现。
在本公开的各种示例性实施方案中,图5的示例性方法中描述和描绘的操作可根据期望以任何合适次序来进行或执行。另外,在某些示例性实施方案中,该操作的至少一部分可以并行执行。此外,在某些示例性实施方案中,可执行比图5中描绘的更少、更多或不同的操作。
尽管已经描述了本公开的具体实施方案,但本领域的普通技术人员将认识到,许多其它修改形式和替代实施方案也在本公开的范围内。例如,相对于特定系统、系统部件、设备或设备部件描述的功能和/或处理能力中的任一者均可由任何其它系统、设备或部件来执行。此外,虽然已根据本公开的实施方案描述了各种示例性实施方式和架构,但本领域的普通技术人员将会知道,本文所述的示例性实施方式和架构的许多其它修改形式也在本公开的范围内。
本公开可为一种系统、一种方法和/或一种计算机程序产品。该计算机程序产品可包括其上具有计算机可读程序指令的计算机可读存储介质(或介质),该计算机可读程序指令用于使处理器执行本公开的各方面。
计算机可读存储介质可为可保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可为例如但不限于电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更多具体示例的不完全列表包括以下:硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存存储器)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒和前述的任何合适组合。如本文所用,计算机可读存储介质不应理解为本身为瞬态信号,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过线材传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络例如互联网、局域网、广域网和/或无线网络下载到外部计算机或外部存储设备。网络可包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本公开的操作的计算机可读程序指令可以是汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或以一种或多种编程语言包括面向对象的编程语言(诸如Smalltalk、C++等)和常规的程序编程语言(诸如“C”编程语言或类似的编程语言)的任何组合编写的源代码或对象代码。计算机可读程序指令可完全在用户的计算机上、部分地在用户的计算机上、作为独立的软件包、部分地在用户的计算机上且部分地在远程计算机上或完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可通过任何类型的网络连接到用户的计算机,该任何类型的网络包括局域网(LAN)或广域网(WAN),或者可连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施方案中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息来个性化电子电路来执行计算机可读程序指令,以便执行本公开的各个方面。
本文结合根据本发明实施方案的方法、设备(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可由计算机可读程序指令来实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以制备机器,使得经由计算机或其它可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令也可存储在计算机可读存储介质中,该计算机可读存储介质可引导计算机、可编程数据处理设备和/或其它设备以特定方式运行,使得具有存储在其中的指令的计算机可读存储介质包括制造制品,该制造制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各个方面的指令。
计算机可读程序指令也可加载到计算机、其它可编程数据处理设备或其它设备上,以使得在计算机、其它可编程设备或其它设备上执行一系列操作步骤产生计算机实现的过程,使得在计算机、其它可编程设备或其它设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出根据本公开的各种实施方案的系统、方法和计算机程序产品的可能的具体实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示模块、区段或指令的一部分,其包括用于实现(一个或多个)所指定逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所指出的功能可按附图中指出的次序发生。例如,连续示出的两个框实际上可以大体上同时执行,或者可根据所涉及的功能有时以相反的次序执行该框。还应当注意,框图和/或流程图图示的每个框和框图和/或流程图图示中的框的组合可由执行指定功能或动作或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
尽管已经参考示例性实施方案描述了上述公开内容,但本领域的技术人员应当理解,可在不脱离其范围的前提下作出各种改变,并且可替代其元件的等同物。此外,在不脱离本公开的基本范围的情况下,可作出许多修改以使特定情况或材料适应本公开的教导内容。因此,旨在本公开不限于所公开的具体实施方案,而是将包括落入其范围内的所有实施方案。
Claims (9)
1.一种用于训练高精度低位卷积神经网络(CNN)的系统,所述系统包括:
至少一个存储器,所述至少一个存储器存储计算机可执行指令;和
至少一个处理器,所述至少一个处理器被配置为访问所述至少一个存储器并执行所述计算机可执行指令以:
接收对所述卷积神经网络的卷积层的输入,所述卷积层包括1×1滤波器;
使用二元激活的线性组合模拟实值激活函数;
使用每个二元激活处理所述输入以获得一组二元激活结果;
使用二元滤波器的线性组合模拟所述1×1滤波器;
将每个二元激活结果与二元滤波器的所述线性组合卷积,以获得一组卷积结果;以及
对所述卷积结果求和以获得所述卷积层的输出,
其中所述输入包括车辆的周围环境的图像,并且经训练的高精度低位卷积神经网络在可操作地耦接到所述车辆的嵌入式设备上实现,并且其中所述至少一个处理器被进一步配置为执行所述计算机可执行指令以:
将所述经训练的高精度低位卷积神经网络施加至所述图像以执行对象识别;以及
在可操作地耦接到所述车辆的显示器上呈现所述对象识别的结果的通知。
2.根据权利要求1所述的系统,其中所述至少一个处理器被配置为模拟执行所述计算机可执行指令的所述卷积层的所述1×1滤波器以:
解决优化问题以确定一组标量值和二元滤波器的所述线性组合的一组对应二元滤波器。
3.根据权利要求1所述的系统,其中所述输入为第一输入,所述卷积层为第一卷积层,所述组二元激活结果为第一组二元激活结果,并且所述组卷积结果为第一组卷积结果,并且其中所述至少一个处理器被进一步配置为执行所述计算机可执行指令以:
接收对所述卷积神经网络的第二卷积层的第二输入,所述第二卷积层包括非1×1滤波器;
使用每个二元激活处理所述第二输入以获得第二组二元激活结果;
使用缩放的二元滤波器模拟所述非1×1滤波器;
将所述第二组二元激活结果中的每个二元激活结果与所述缩放的二元滤波器卷积以获得第二组卷积结果;以及
将所述第二组卷积结果中的所述卷积结果求和以获得所述第二卷积层的输出。
4.根据权利要求3所述的系统,其中所述至少一个处理器被配置为通过执行所述计算机可执行指令来模拟所述第二卷积层的所述非1×1滤波器以:
解决优化问题以确定所述缩放的二元滤波器的标量值和二元滤波器。
5.根据权利要求3所述的系统,其中所述至少一个处理器被进一步配置为执行所述计算机可执行指令以:
执行反向传播以调节每个相应的缩放的二元滤波器的相应权重和二元滤波器的每个相应的线性组合的相应权重;以及执行反向传播以调节二元激活的所述线性组合的一个或多个二元激活。
6.根据权利要求1所述的系统,其中所述至少一个处理器被配置为通过执行所述计算机可执行指令来使用二元激活的所述线性组合模拟所述实值激活函数以:
至少部分地使用产生二元输出的指示函数将二元化函数施加至所述实值激活函数。
7.一种用于训练高精度低位卷积神经网络(CNN)的计算机实现的方法,所述方法包括:
接收对所述卷积神经网络的卷积层的输入,所述卷积层包括1×1滤波器;
使用二元激活的线性组合模拟实值激活函数;
使用每个二元激活处理所述输入以获得一组二元激活结果;
使用二元滤波器的相应线性组合模拟所述1×1滤波器;
将每个二元激活结果与二元滤波器的所述线性组合卷积,以获得一组卷积结果;以及
对所述卷积结果求和以获得所述卷积层的输出,
其中所述输入包括车辆的周围环境的图像,并且经训练的高精度低位卷积神经网络在可操作地耦接到所述车辆的嵌入式设备上实现,并且其中所述方法进一步包括:
将所述经训练的高精度低位卷积神经网络施加至所述图像以执行对象识别;以及
在可操作地耦接到所述车辆的显示器上呈现所述对象识别的结果的通知。
8.根据权利要求7所述的计算机实现的方法,其中所述输入为第一输入,所述卷积层为第一卷积层,所述组二元激活结果为第一组二元激活结果,并且所述组卷积结果为第一组卷积结果,所述方法还包括:
接收对所述卷积神经网络的第二卷积层的第二输入,所述第二卷积层包括非1×1滤波器;
使用每个二元激活处理所述第二输入以获得第二组二元激活结果;
使用缩放的二元滤波器模拟所述非1×1滤波器;
将所述第二组二元激活结果中的每个二元激活结果与所述缩放的二元滤波器卷积以获得第二组卷积结果;以及
对所述第二组卷积结果中的所述卷积结果求和以获得所述第二卷积层的输出。
9.一种用于训练高精度低位卷积神经网络(CNN)的计算机可读存储介质,所述计算机可读存储介质包括可由处理电路读取的非暂态存储介质,所述非暂态存储介质存储可由所述处理电路执行以使得执行方法的指令,所述方法包括:
接收对所述卷积神经网络的卷积层的输入,所述卷积层包括1×1滤波器;
使用二元激活的线性组合模拟实值激活函数;
使用每个二元激活处理所述输入以获得一组二元激活结果;
使用二元滤波器的线性组合模拟所述1×1滤波器;
将每个二元激活结果与二元滤波器的所述线性组合卷积,以获得一组卷积结果;以及
对所述卷积结果求和以获得所述卷积层的输出,
其中所述输入包括车辆的周围环境的图像,并且经训练的高精度低位卷积神经网络在可操作地耦接到所述车辆的嵌入式设备上实现,并且其中所述方法进一步包括:
将所述经训练的高精度低位卷积神经网络施加至所述图像以执行对象识别;以及
在可操作地耦接到所述车辆的显示器上呈现所述对象识别的结果的通知。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/107315 | 2018-08-21 | ||
US16/107,315 US10824943B2 (en) | 2018-08-21 | 2018-08-21 | High precision low bit convolutional neural network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110852414A CN110852414A (zh) | 2020-02-28 |
CN110852414B true CN110852414B (zh) | 2023-08-29 |
Family
ID=69413132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910462515.6A Active CN110852414B (zh) | 2018-08-21 | 2019-05-30 | 高精度低位卷积神经网络 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10824943B2 (zh) |
CN (1) | CN110852414B (zh) |
DE (1) | DE102019113874A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3841528B1 (en) * | 2018-09-27 | 2024-07-17 | Google LLC | Data compression using integer neural networks |
US12033070B2 (en) * | 2020-06-12 | 2024-07-09 | Huawei Technologies Co., Ltd. | Low resource computational block for a trained neural network |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550701A (zh) * | 2015-12-09 | 2016-05-04 | 福州华鹰重工机械有限公司 | 实时图像提取识别方法及装置 |
CN107644251A (zh) * | 2016-07-22 | 2018-01-30 | 北京市商汤科技开发有限公司 | 神经元激活方法、装置和系统以及对象分类方法和系统 |
CN108205701A (zh) * | 2016-12-20 | 2018-06-26 | 联发科技股份有限公司 | 一种执行卷积计算的系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102276339B1 (ko) * | 2014-12-09 | 2021-07-12 | 삼성전자주식회사 | Cnn의 근사화를 위한 학습 장치 및 방법 |
US11106973B2 (en) * | 2016-03-16 | 2021-08-31 | Hong Kong Applied Science and Technology Research Institute Company Limited | Method and system for bit-depth reduction in artificial neural networks |
US20180114109A1 (en) * | 2016-10-20 | 2018-04-26 | Nokia Technologies Oy | Deep convolutional neural networks with squashed filters |
-
2018
- 2018-08-21 US US16/107,315 patent/US10824943B2/en active Active
-
2019
- 2019-05-23 DE DE102019113874.4A patent/DE102019113874A1/de active Pending
- 2019-05-30 CN CN201910462515.6A patent/CN110852414B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550701A (zh) * | 2015-12-09 | 2016-05-04 | 福州华鹰重工机械有限公司 | 实时图像提取识别方法及装置 |
CN107644251A (zh) * | 2016-07-22 | 2018-01-30 | 北京市商汤科技开发有限公司 | 神经元激活方法、装置和系统以及对象分类方法和系统 |
CN108205701A (zh) * | 2016-12-20 | 2018-06-26 | 联发科技股份有限公司 | 一种执行卷积计算的系统及方法 |
Non-Patent Citations (1)
Title |
---|
王震 等.基于卷积核滤波器筛选的CNN模型精简方法.《天津理工大学学报》.2018,第21-26页. * |
Also Published As
Publication number | Publication date |
---|---|
DE102019113874A1 (de) | 2020-02-27 |
US10824943B2 (en) | 2020-11-03 |
US20200065661A1 (en) | 2020-02-27 |
CN110852414A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12056598B2 (en) | Runtime reconfigurable neural network processor core | |
CN110998570B (zh) | 具有带有块浮点处理的矩阵矢量单元的硬件节点 | |
US10656962B2 (en) | Accelerate deep neural network in an FPGA | |
US10872290B2 (en) | Neural network processor with direct memory access and hardware acceleration circuits | |
US11106976B2 (en) | Neural network output layer for machine learning | |
WO2019111118A1 (en) | Robust gradient weight compression schemes for deep learning applications | |
EP3564863B1 (en) | Apparatus for executing lstm neural network operation, and operational method | |
US11663461B2 (en) | Instruction distribution in an array of neural network cores | |
CN113435682A (zh) | 分布式训练的梯度压缩 | |
US20190332924A1 (en) | Central scheduler and instruction dispatcher for a neural inference processor | |
US11900263B2 (en) | Augmenting neural networks | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
CN110852414B (zh) | 高精度低位卷积神经网络 | |
US11182674B2 (en) | Model training by discarding relatively less relevant parameters | |
EP3821376A1 (en) | Hierarchical parallelism in a network of distributed neural network cores | |
AU2020395435B2 (en) | Flexible precision neural inference processing units | |
JP2023544523A (ja) | 計算タスクを実行するためのハードウェアアクセラレータ | |
CN110633596A (zh) | 预测车辆方向角的方法和装置 | |
WO2024108382A1 (en) | Methods and apparatus to perform many-to-one feature distillation in neural networks | |
JP2022091126A (ja) | ニューラル推論チップ、少なくとも1つのニューラル推論コアを備える集積回路およびコンピュータ実装方法(有効なニューラルネットワーク活性化関数のvlsi実装のための効率的な方法) | |
CN115952847A (zh) | 神经网络模型的处理方法及处理装置 | |
EP4423671A1 (en) | Per-embedding-group activation quantization | |
CN118468013A (zh) | 模型训练方法、目标价值操作执行方法、装置和电子设备 |
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 |