CN109840589A - 一种在fpga上运行卷积神经网络的方法、装置及系统 - Google Patents
一种在fpga上运行卷积神经网络的方法、装置及系统 Download PDFInfo
- Publication number
- CN109840589A CN109840589A CN201910075397.3A CN201910075397A CN109840589A CN 109840589 A CN109840589 A CN 109840589A CN 201910075397 A CN201910075397 A CN 201910075397A CN 109840589 A CN109840589 A CN 109840589A
- Authority
- CN
- China
- Prior art keywords
- scale
- convolutional layer
- convolutional
- fpga
- result
- 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.)
- Granted
Links
Abstract
本发明提供一种在FPGA上运行卷积神经网络的方法、装置及系统,用于解决现有技术中在FPGA上运行卷积神经网络时,存在实施步骤繁琐、时间成本高的问题。方法包括:上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;根据每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,该FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;将每个卷积层对应的Wf、scalef以及Biasf写入该FPGA,以使该FPGA在运行该卷积神经网络模型时,基于每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。
Description
技术领域
本发明涉及深度学习技术领域,特别涉及一种在FPGA上运行卷积神经网络的方法、装置及系统。
背景技术
近年来,深度学习(deep learning)技术发展迅速,在众多行业产生广阔的影响,特别是计算机视觉、语音识别和自然语言处理等领域。其中,卷积神经网络(ConvolutionalNeural Networks,CNN)是深度学习的代表算法之一,是一类包含卷积计算且具有深度结构的前馈神经网络(Feed forward Neural Networks)。
基于深度学习的卷积神经网络需要大量的计算资源,而可编程器件(Field-Programmable Gate Array,FPGA)器件具有的丰富逻辑资源、存储器资源、数字信号处理单元(Digital Signal Processing,DSP)和布线资源,如果充分利用好这些资源和FPGA并行执行的特性,可以很好的完成应用场景的硬件加速。由于FPGA没有很好的浮点计算资源,因此需要将算法模型量化成整型参与计算,节约硬件资源同时提高运算速度。
现有技术中对卷积神经网络的量化方法,仅关注如何将卷积神经网络的权重参数、输入参数等特征进行量化操作,却没有关注量化后的卷积神经网络在FPGA等硬件上进行实现时对原有卷积神经网络计算过程的影响,导致量化后的卷积神经网络的精度损失较大,有些现有技术为了保证量化后的神经网络在FPGA上的运算性能,在将量化后卷积神经网络部署到FPGA上后,会对神经网络进行再训练的过程,但是这样又会增加实施的时间成本,不便于快速实施。
由此可见,现有技术在FPGA上运行卷积神经网络时,存在实施步骤繁琐、时间成本高的技术问题。
发明内容
本发明实施例提供一种在FPGA上运行卷积神经网络的方法、装置及系统,用于解决现有技术中在FPGA上运行卷积神经网络时,存在实施步骤繁琐、时间成本高的问题。
第一方面,本发明实施例提供一种在FPGA上运行卷积神经网络的方法,所述方法包括:
上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;其中,所述压缩尺度包括对所述每个卷积层的输出结果进行量化的第一压缩尺度scaleout、对所述每个卷积层的卷积核权重进行量化的第二压缩尺度scalew以及对所述每个卷积层的偏置进行量化的第三压缩尺度scalebias;
所述上位机根据所述每个卷积层对应的压缩尺度,确定出可编程器件FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
所述上位机将所述每个卷积层对应的Wf、scalef以及Biasf写入所述FPGA,以使所述FPGA在运行所述卷积神经网络模型时,基于所述每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。
在本实施方式中,本发明实施例技术方案中的上位机在对浮点格式的卷积神经网络进行量化时,考虑了量化后的卷积神经网络在FPGA等硬件上进行实现时对原有卷积神经网络计算过程的影响,有效提高了量化后的神经网络在FPGA上的运算性能,量化后的卷积神经网络部署到FPGA上后,不需要对神经网络进行再训练的过程,节省了实施的时间成本,便于快速实施。
可选的,所述上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度,包括:
所述上位机根据预设的量化位宽确定出量化后的最大值max_q、最小值min_q以及缩放尺度搜索空间scale_list;其中所述缩放尺度搜索空间scale_list中包括多个不同的缩放尺度;
所述上位机针对卷积神经网络模型的每个卷积层的任一计算参数input,基于所述搜索空间scale_list中每个缩放尺度对所述任一计算参数进行缩放取整处理,获得该缩放尺度对应的缩放取整结果;如果所述缩放取整结果未超出范围[min_q,max_q],则将所述缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果,否则对所述缩放取整结果进行裁剪处理,并将裁剪后的缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果;使用该缩放尺度将该缩放尺度下所述任一计算参数的量化结果映射回浮点空间,获得该缩放尺度下所述任一计算参数的去量化结果dequantized_input;
所述上位机计算所述搜索空间scale_list中每个缩放尺度下所述任一计算参数的量化结果input和去量化结果dequantized_input的L2范数;从所述缩放尺度搜索空间scale_list中确定出使得L2范数最小的缩放尺度;将所述使得L2范数最小的缩放尺度作为该卷积层的所述任一计算参数的缩放尺度。
本实施方式采用分层量化的方式,将浮点输入量化完后反量化为浮点数,再同原浮点输入比较,通过计算最小化欧式距离的方式求缩放尺度,平衡了缩放尺度过大导致落入量化后区间外的数值带来的剪裁偏差,以及缩放尺度过小时,数值四舍五入到整数时取整的偏差。
可选的,所述上位机在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,所述方法还包括:
所述上位机将若干个样本输入所述卷积神经网络模型;
所述上位机统计所述卷积神经网络模型的每个卷积层的输出结果的分布情况;
所述上位机根据所述每个卷积层的输出结果的分布情况确定一个特征值,用以表征该卷积层的输出结果。
本实施方式,针对卷积层输出结果的量化,采用批量记录各卷积层的输出结果,然后统一量化的方式进行量化,对于FPGA硬件加速情况下的不同输入情况有更高的鲁棒性。
可选的,在所述上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,所述方法还包括:
当所述卷积神经网络模型的任一卷积层包含有批标准化运算时,基于以下公式对所述任一卷积层的批标准化权重值γ和卷积计算权重值W进行合并,获得该卷积层的卷积核权重Winf和偏置Biasinf:
其中,β为批标准化偏置值,μ为批标准化均值,σ为批标准化标准差。
本实施方式,在卷积神经网络的卷积层包括批标准化时,将批标准化的计算参数转换为等价的卷积核权重和偏置后再进行量化,以此提高FPGA运行神经网络的通用性。
可选的,所述上位机根据所述每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf,包括:
所述上位机基于所述每个卷积层对应的第二压缩尺度scalew对该卷积层的卷积核权重进行量化,获得量化后的卷积核权重;确定所述量化后的卷积核权重为所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf;
所述上位机根据所述每个卷积层对应的第一压缩尺度scaleout、第二压缩尺度scalew以及该卷积层的上一卷积层对应的第一压缩尺度scaleout,确定所述FPGA对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1;
所述上位机根据所述每个卷积层对应的第三压缩尺度scalew对该卷积层的偏置进行量化,获得量化后的偏置Bias‘;根据所述每个卷积层对应的第一压缩尺度scaleout、第三压缩尺度scalebias以及量化后的偏置Bias‘,确定所述FPGA对该卷积层的移位计算结果进行偏置操作的偏置Biasf。
本实施方式给出了FPGA对卷积层进行卷积计算所使用的卷积核权重Wf、scalef1以及偏置Biasf的确定方法,使得在将量化后卷积神经网络部署到FPGA上后,不需要对神经网络进行再训练的过程,直接根据scalef1、scalef1以及Biasf进行卷积层的运算,节省了实施的时间成本,便于快速实施。
第二方面,本发明实施例提供一种在FPGA上运行卷积神经网络的方法,所述方法包括:
FPGA在运行卷积神经网络模型时,读取上位机写入的所述卷积神经网络模型的每个卷积层对应的Wf、scalef以及Biasf;
所述FPGA基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算。
本实施方式,FPGA在运行卷积神经网络模型时,直接基于上位机写入的卷积神经网络模型的每个卷积层对应的Wf、scalef以及Biasf执行卷积层的运算,不需要对神经网络进行再训练的过程,节省了实施的时间成本,便于快速实施。
可选的,所述FPGA基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算,包括:
所述FPGA基于所述每个卷积层对应的Wf对该卷积层的输入进行卷积计算,获得卷积计算结果;
所述FPGA基于该卷积层对应的scalef对所述卷积计算结果执行移位操作,获得移位计算结果;
所述FPGA基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作,获得偏置计算结果;
所述FPGA对所述偏置计算结果进行激活函数Leaky-ReLU运算,获得该卷积层的输出结果。
本实施方式,给出了FPGA在运行每个卷积层的具体计算流程,给出了完整的卷积神经网络从量化到硬件实现的解决方案,在可接受的精度损失范围的基础上实现卷积神经网络的量化。
可选的,在所述FPGA基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作之前,所述方法还包括:
所述FPGA在确定所述移位计算结果超出范围[min_q,max_q]时,对所述移位计算结果进行裁剪处理,并使用裁剪后的移位计算结果替换原来的移位计算结果;其中,所述max_q为根据预设的量化位宽确定出的量化后的最大值,所述min_q为根据所述预设的量化位宽确定出的量化后的最小值;
在所述FPGA对所述偏置计算结果进行激活函数Leaky-ReLU运算之前,所述方法还包括:
所述FPGA在确定所述偏置计算结果超出所述范围[min_q,max_q]时,对所述偏置计算结果进行裁剪处理,并使用裁剪后的偏置计算结果替换原来的偏置计算结果。
本实施方式对超出范围[min_q,max_q]的移位计算结果和偏置计算结果进行裁剪操作,保证卷积层中各参数在预设的量化位宽内,提高了在FPGA运行卷积神经网络的可靠性。
第三方面,本发明实施例提供一种在FPGA上运行卷积神经网络的系统,包括通信连接的上位机和FPGA;
其中,所述上位机用于执行本发明实施例第一方面所述的方法;
所述FPGA用于执行本发明实施例第二方面所述的方法。
第四方面,本发明实施例提供一种在FPGA上运行卷积神经网络的装置,所述装置包括:
计算模块,用于根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;其中,所述压缩尺度包括对所述每个卷积层的输出结果进行量化的第一压缩尺度scaleout、对所述每个卷积层的卷积核权重进行量化的第二压缩尺度scalew以及对所述每个卷积层的偏置进行量化的第三压缩尺度scalebias;
确定模块,用于根据所述每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
通信模块,用于将所述每个卷积层对应的Wf、scalef以及Biasf写入所述FPGA,以使所述FPGA在运行所述卷积神经网络模型时,基于所述每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。
可选的,所述计算模块用于:
根据预设的量化位宽确定出量化后的最大值max_q、最小值min_q以及缩放尺度搜索空间scale_list;其中所述缩放尺度搜索空间scale_list中包括多个不同的缩放尺度;
对卷积神经网络模型的每个卷积层的任一计算参数input,基于所述搜索空间scale_list中每个缩放尺度对所述任一计算参数进行缩放取整处理,获得该缩放尺度对应的缩放取整结果;如果所述缩放取整结果未超出范围[min_q,max_q],则将所述缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果,否则对所述缩放取整结果进行裁剪处理,并将裁剪后的缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果;使用该缩放尺度将该缩放尺度下所述任一计算参数的量化结果映射回浮点空间,获得该缩放尺度下所述任一计算参数的去量化结果dequantized_input;
计算所述搜索空间scale_list中每个缩放尺度下所述任一计算参数的量化结果input和去量化结果dequantized_input的L2范数;从所述缩放尺度搜索空间scale_list中确定出使得L2范数最小的缩放尺度;将所述使得L2范数最小的缩放尺度作为该卷积层的所述任一计算参数的缩放尺度。
可选的,所述计算模块还用于:
在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,将若干个样本输入所述卷积神经网络模型;
统计所述卷积神经网络模型的每个卷积层的输出结果的分布情况;
根据所述每个卷积层的输出结果的分布情况确定一个特征值,用以表征该卷积层的输出结果。
可选的,所述计算模块还用于:
在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,当所述卷积神经网络模型的任一卷积层包含有批标准化运算时,基于以下公式对所述任一卷积层的批标准化权重值γ和卷积计算权重值W进行合并,获得该卷积层的卷积核权重Winf和偏置Biasinf:
其中,β为批标准化偏置值,μ为批标准化均值,σ为批标准化标准差。
可选的,所述确定模块用于:
基于所述每个卷积层对应的第二压缩尺度scalew对该卷积层的卷积核权重进行量化,获得量化后的卷积核权重;确定所述量化后的卷积核权重为所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf;
根据所述每个卷积层对应的第一压缩尺度scaleout、第二压缩尺度scalew以及该卷积层的上一卷积层对应的第一压缩尺度scaleout,确定所述FPGA对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1;
根据所述每个卷积层对应的第三压缩尺度scalew对该卷积层的偏置进行量化,获得量化后的偏置Bias‘;根据所述每个卷积层对应的第一压缩尺度scaleout、第三压缩尺度scalebias以及量化后的偏置Bias‘,确定所述FPGA对该卷积层的移位计算结果进行偏置操作的偏置Biasf。
第五方面,本发明实施例提供一种在FPGA上运行卷积神经网络的装置,所述装置包括:
读取模块,用于在所述装置运行卷积神经网络模型时,读取上位机写入的所述卷积神经网络模型的每个卷积层对应的Wf、scalef以及Biasf;
运算模块,用于基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算。
可选的,所述运算模块用于:
基于所述每个卷积层对应的Wf对该卷积层的输入进行卷积计算,获得卷积计算结果;
基于该卷积层对应的scalef对所述卷积计算结果执行移位操作,获得移位计算结果;
基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作,获得偏置计算结果;
对所述偏置计算结果进行激活函数Leaky-ReLU运算,获得该卷积层的输出结果。
可选的,所述运算模块还用于:
在基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作之前,在确定所述移位计算结果超出范围[min_q,max_q]时,对所述移位计算结果进行裁剪处理,并使用裁剪后的移位计算结果替换原来的移位计算结果;其中,所述max_q为根据预设的量化位宽确定出的量化后的最大值,所述min_q为根据所述预设的量化位宽确定出的量化后的最小值;
在对所述偏置计算结果进行激活函数Leaky-ReLU运算之前,在确定所述偏置计算结果超出所述范围[min_q,max_q]时,对所述偏置计算结果进行裁剪处理,并使用裁剪后的偏置计算结果替换原来的偏置计算结果。
第六方面,本发明实施例提供一种在FPGA上运行卷积神经网络的装置,包括:
至少一个处理器,以及
与所述至少一个处理器通信连接的存储器、通信接口;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,利用所述通信接口执行本发明实施例第一方面或第一方面的任一种可选的实施方式所述的方法。
第七方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行本发明实施例第一方面或第一方面的任一种可选的实施方式所述的方法。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明实施例技术方案中的上位机在对浮点格式的卷积神经网络进行量化时,考虑了量化后的卷积神经网络在FPGA等硬件上进行实现时对原有卷积神经网络计算过程的影响,首先根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度,然后根据每个卷积层对应的压缩尺度确定出可FPGA对该卷积层进行卷积计算时所使用的卷积核权重Wf、移位尺度参数scalef1以及偏置Biasf,最后将每个卷积层对应的Wf、scalef以及Biasf写入FPGA,以使FPGA在运行卷积神经网络模型时,基于每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。本发明实施例技术方案有效提高了量化后的神经网络在FPGA上的运算性能,量化后的卷积神经网络部署到FPGA上后,不需要对神经网络进行再训练的过程,节省了实施的时间成本,便于快速实施。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种在FPGA上运行卷积神经网络的方法流程示意图;
图2为本发明实施例中一种在FPGA上运行卷积神经网络的装置的结构示意图;
图3为本发明实施例中另一种在FPGA上运行卷积神经网络的装置的结构示意图;
图4为本发明实施例中另一种在FPGA上运行卷积神经网络的装置的结构示意图。
具体实施方式
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本发明实施例的描述中“多个”,是指两个或两个以上。
本发明实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明实施例提供一种在FPGA上运行卷积神经网络的方法、装置及系统,用于解决现有技术中在FPGA上运行卷积神经网络时,存在实施步骤繁琐、时间成本高的问题。
其中,该系统包括上位机和FPGA;该上位机具体可以为台式电脑、平板电脑、笔记本电脑、服务器、等任何具有计算能力的电子设备,或者多个这样的电子设备组成的电子设备系统,本发明实施例不做具体限制。
请参见图1,基于该系统在FPGA上运行卷积神经网络的方法具体包括:
S101:上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;
其中,卷积神经网络模型为已训练好的浮点格式的神经网络模型;该压缩尺度包括对每个卷积层的输出结果进行量化的第一压缩尺度scaleout、对每个卷积层的卷积核权重进行量化的第二压缩尺度scalew以及对每个卷积层的偏置进行量化的第三压缩尺度scalebias。
作为一种可选的实施方式,在本发明实施例中,由于量化后的神经网络模型需要部署到FPGA做边缘端应用,因此在量化时需要尽可能多地统计不同样本下各卷积层的输出结果,并通过量化前的卷积神经网络做前向运算,将各个卷积层的输出结果记录到上位机的存储介质,完成后再统一读取分析每个卷积层的输出结果的分布情况,最后根据每个卷积层的输出结果的分布情况确定一个或者多个特征值,用来表征该卷积层的输出结果,以此实现针对每个卷积层的输出结果采用统一量化的方式量化,进而保证FPGA在运行神经网络时在不同的输入情况下都有较高的鲁棒性。
作为一种可选的实施方式,在本发明实施例中,当卷积神经网络模型的任一卷积层包含有批标准化运算时,则上位机在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,需要对批标准化权重值γ和卷积计算权重值W进行合并,得到等价的卷积核权重和偏置。
对批标准化权重值γ和卷积计算权重值W进行合并的公式如下:
其中,β为该任一卷积层的批标准化偏置值,μ为该任一卷积层的批标准化均值,σ为该任一卷积层的批标准化标准差,Winf、Biasinf分别为合获得的该任一卷积层的卷积核权重和偏置。
本实施方式实现了在卷积神经网络的卷积层包括批标准化时,将批标准化的计算参数转换为等价的卷积核权重和偏置后再进行量化,以此提高FPGA运行神经网络的通用性。
作为一种可选的实施方式,在本发明实施例中,上位机对卷积神经网络模型的每个卷积层的各个计算参数进行量化时,采用分层量化的方式进行量化,即分别求每个计算参数对应的量化尺度。量化尺度的具体计算过程包括:
(1)上位机根据预设的量化位宽确定出量化后的最大值max_q、最小值min_q以及缩放尺度搜索空间scale_list;其中缩放尺度搜索空间scale_list中包括多个不同的缩放尺度;
(2)上位机针对任一计算参数input(如输出结果、卷积核权重或偏置),基于搜索空间scale_list中每个缩放尺度对该计算参数input进行缩放取整处理,获得该缩放尺度对应的缩放结果input*scale,然后对缩放结果进行取整,获得缩放取证结果int(input*scale);如果缩放取整结果int(input*scale)未超出范围[min_q,max_q],则将该缩放取整结果int(input*scale)作为该缩放尺度下该计算参数input的量化结果quantized_input;如果缩放取整结果int(input*scale)超出范围[min_q,max_q],则对超出该范围缩放取整结果int(input*scale)进行裁剪处理,并将裁剪后的缩放取整结果作为该缩放尺度下该计算参数input的量化结果quantized_input;
其中,缩放、裁剪、取整的过程可通过以下函数表示:
quantized_input=clamp(input*scale,min_q,max_q);
即:首先对intput进行缩放,获得intput*scale;然后对intput*scale取整得到缩放取整结果int(input*scale);将缩放取整结果int(input*scale)和max_q、min_q比较,当缩放取整结果大于max_q时,使用max_q替换缩放取整结果作为量化结果;当缩放取整结果小于min_q时,则使用min_q替换缩放取整结果作为量化结果。
(3)将各个量化后的该计算参数input按照各个缩放尺度重新映射回浮点空间,获得该计算参数input在各个缩放尺度下的去量化结果dequantized_input;
(4)构建求L2范数的函数L2(input,dequantized_input),通过如下公式得到该计算参数的量化尺度:
即:计算搜索空间scale_list中每个缩放尺度下任一计算参数的量化结果input和去量化结果dequantized_input的L2范数,从缩放尺度搜索空间scale_list中确定出使得L2范数最小的缩放尺度,并将使得L2范数最小的缩放尺度作为该卷积层的任一计算参数的缩放尺度。
在具体实施时,除了通过求input和dequantized_input的L2范数最小值的方式确定量化尺度外,还可以将上述求input和dequantized_input的L2范数的步骤替换为求KL散度、最大最小值等方式来确定量化尺度,本发明实施对此不做具体限制。
本实施方式采用将浮点格式的计算参数量化,以及对量化后的计算参数进行去量化,通过将去量化的计算参数dequantized_input和原始计算参数input进行比较,通过计算欧式距离的方式确定最终用于量化计算的缩放尺度,平衡了缩放尺度过大导致落入量化后区间外的数值带来的剪裁偏差,以及缩放尺度过小时,数值四舍五入到整数时取整的偏差。特别是在预设的量化位宽定为16位时,量化偏差对于目标检测卷积神经网络带来的精度损失最多在亚像素级,即不会影响目标检测框的位置与结果。
S102:上位机根据每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
在本发明实施例中,卷积核权重Wf的计算方式包括:
基于每个卷积层对应的第二压缩尺度scalew对该卷积层的卷积核权重进行量化,获得量化后的卷积核权重;确定量化后的卷积核权重即为FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf。
其中,基于每个卷积层对应的第二压缩尺度scalew对该卷积层的卷积核权重进行量化通过如下公式实现:Wf=clamp(Winf*scalew,min_q,max_q)。
在本发明实施例中,移位尺度参数scalef1的计算方式包括:
根据每个卷积层对应的第一压缩尺度scaleout、第二压缩尺度scalew以及该卷积层的上一卷积层对应的第一压缩尺度scaleout,确定FPGA对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1;
在具体实施时,具体可通过公式求移位尺度参数scalef1;其中,为本卷积层的第一压缩尺度scaleout,为本卷层的第二压缩尺度scalew,为上一卷积层对应的第一压缩尺度scaleout;
在本发明实施例中,偏置Biasf的计算方式包括:
根据每个卷积层对应的第三压缩尺度scalew对该卷积层的偏置进行量化,获得量化后的偏置Bias‘;根据每个卷积层对应的第一压缩尺度scaleout、第三压缩尺度scalebias以及量化后的偏置Bias‘,确定FPGA对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
其中,Bias‘和Biasf的计算公式具体可以为:
Bias‘=clamp(Biasinf*scalebiasinf,min_q,max_q);
S103:上位机将每个卷积层对应的Wf、scalef1以及Biasf写入FPGA;
具体的,上位机可通过配置表将每个卷积层对应的Wf、scalef1以及Biasf写到FPGA硬件中去,用于FPGA的卷积神经网络的计算过程中参与运算。
S104:FPGA在运行卷积神经网络模型时,读取上位机写入的卷积神经网络模型的每个卷积层对应的Wf、scalef1以及Biasf;
S105:FPGA基于每个卷积层对应的Biasf、scalef1及Wf执行该卷积层的运算。
具体的,所述FPGA执行每个卷积层的卷积运算过程包括:
(1)基于所述每个卷积层对应的Wf对该卷积层的输入进行卷积计算,获得卷积计算结果;
(2)基于该卷积层对应的scalef1对所述卷积计算结果执行移位操作,获得移位计算结果;
具体的,将卷积计算结果与scalef1相乘获得移位计算结果。在具体实施时,如果该移位计算结果超出范围[min_q,max_q],则还要对该移位计算结果进行裁剪处理,并使用裁剪后的移位计算结果替换原来的移位计算结果。即在原移位计算结果大于max_q时,使用max_q替换原移位计算结果,在原移位计算结果小于min_q时,使用min_q替换原移位计算结果。
(3)基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作,获得偏置计算结果;
具体的,将移位计算结果加上Biasf获得偏置计算结果。在具体实施时,如果该偏置计算结果超出范围[min_q,max_q],则还要对该偏置计算结果进行裁剪处理,并使用裁剪后的偏置计算结果替换原来的偏置计算结果。即在原偏置计算结果大于max_q时,使用max_q替换原偏置计算结果,在原偏置计算结果小于min_q时,使用min_q替换原偏置计算结果。
(4)对所述偏置计算结果进行激活函数Leaky-ReLU运算,获得该卷积层的输出结果。
需要说明的是,本发明实施例是以在FPGA上部署卷积神经网络的场景为例对本发明实施例中的卷积神经网络量化方法进行说明,在具体实施过程中,在将卷积神经网络部署到其它类型的硬件进行量化时,也可以采用本发明实施例上述量化方法进行量化,还可以对本发明实施例上述量化方法进行各种改动和变型而不脱离本发明的精神和范围,倘若这些修改和变型属于本发明实施例上述量化方法等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
本发明实施例中提供的上述一个或多个技术方案,至少具有如下技术效果或优点:
(1)上位机在对浮点格式的卷积神经网络进行量化时,考虑了量化后的卷积神经网络在FPGA等硬件上进行实现时对原有卷积神经网络计算过程的影响,首先根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度,然后根据每个卷积层对应的压缩尺度确定出可FPGA对该卷积层进行卷积计算时所使用的卷积核权重Wf、移位尺度参数scalef1以及偏置Biasf,最后将每个卷积层对应的Wf、scalef以及Biasf写入FPGA,以使FPGA在运行卷积神经网络模型时,基于每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。本发明实施例有效提高了量化后的神经网络在FPGA上的运算性能,量化后的卷积神经网络部署到FPGA上后,不需要对神经网络进行再训练的过程,节省了实施的时间成本,便于快速实施;
(2)给出了FPGA在运行每个卷积层的具体计算流程,给出了完整的卷积神经网络从量化到硬件实现的解决方案,在可接受的精度损失范围的基础上实现卷积神经网络的量化;
(3)在对神经网络模型量化的过程中,在卷积神经网络的卷积层包括批标准化时,将批标准化的计算参数转换为等价的卷积核权重和偏置后再进行量化,以此提高FPGA运行神经网络的通用性;
(4)在对神经网络模型量化的过程中,针对卷积层输出结果的量化,采用批量记录各卷积层的输出结果,然后统一量化的方式进行量化,对于FPGA硬件加速情况下的不同输入情况有更高的鲁棒性;
(5)在对神经网络模型量化的过程中,采用分层量化的方式,将浮点输入量化完后反量化为浮点数,再同原浮点输入比较,通过计算最小化欧式距离的方式求缩放尺度,平衡了缩放尺度过大导致落入量化后区间外的数值带来的剪裁偏差,以及缩放尺度过小时,数值四舍五入到整数时取整的偏差。
请参见图2,基于同一发明构思,本发明实施例还提供一种在FPGA上运行卷积神经网络的装置,所述装置包括:
计算模块201,用于根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;其中,所述压缩尺度包括对所述每个卷积层的输出结果进行量化的第一压缩尺度scaleout、对所述每个卷积层的卷积核权重进行量化的第二压缩尺度scalew以及对所述每个卷积层的偏置进行量化的第三压缩尺度scalebias;
确定模块202,用于根据所述每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
通信模块203,用于将所述每个卷积层对应的Wf、scalef以及Biasf写入所述FPGA,以使所述FPGA在运行所述卷积神经网络模型时,基于所述每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。
可选的,所述计算模块201用于:
根据预设的量化位宽确定出量化后的最大值max_q、最小值min_q以及缩放尺度搜索空间scale_list;其中所述缩放尺度搜索空间scale_list中包括多个不同的缩放尺度;
对卷积神经网络模型的每个卷积层的任一计算参数input,基于所述搜索空间scale_list中每个缩放尺度对所述任一计算参数进行缩放取整处理,获得该缩放尺度对应的缩放取整结果;如果所述缩放取整结果未超出范围[min_q,max_q],则将所述缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果,否则对所述缩放取整结果进行裁剪处理,并将裁剪后的缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果;使用该缩放尺度将该缩放尺度下所述任一计算参数的量化结果映射回浮点空间,获得该缩放尺度下所述任一计算参数的去量化结果dequantized_input;
计算所述搜索空间scale_list中每个缩放尺度下所述任一计算参数的量化结果input和去量化结果dequantized_input的L2范数;从所述缩放尺度搜索空间scale_list中确定出使得L2范数最小的缩放尺度;将所述使得L2范数最小的缩放尺度作为该卷积层的所述任一计算参数的缩放尺度。
可选的,所述计算模块201还用于:
在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,将若干个样本输入所述卷积神经网络模型;
统计所述卷积神经网络模型的每个卷积层的输出结果的分布情况;
根据所述每个卷积层的输出结果的分布情况确定一个特征值,用以表征该卷积层的输出结果。
可选的,所述计算模块201还用于:
在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,当所述卷积神经网络模型的任一卷积层包含有批标准化运算时,基于以下公式对所述任一卷积层的批标准化权重值γ和卷积计算权重值W进行合并,获得该卷积层的卷积核权重Winf和偏置Biasinf:
其中,β为批标准化偏置值,μ为批标准化均值,σ为批标准化标准差。
可选的,所述确定模块202用于:
基于所述每个卷积层对应的第二压缩尺度scalew对该卷积层的卷积核权重进行量化,获得量化后的卷积核权重;确定所述量化后的卷积核权重为所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf;
根据所述每个卷积层对应的第一压缩尺度scaleout、第二压缩尺度scalew以及该卷积层的上一卷积层对应的第一压缩尺度scaleout,确定所述FPGA对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1;
根据所述每个卷积层对应的第三压缩尺度scalew对该卷积层的偏置进行量化,获得量化后的偏置Bias‘;根据所述每个卷积层对应的第一压缩尺度scaleout、第三压缩尺度scalebias以及量化后的偏置Bias‘,确定所述FPGA对该卷积层的移位计算结果进行偏置操作的偏置Biasf。
以上各模块所执行操作的具体实现方式可以参照本发明实施例上述在FPGA上运行卷积神经网络的方法中对应的步骤,本发明实施例不再赘述。
请参见图3,本发明实施例还提供一种在FPGA上运行卷积神经网络的装置,所述装置包括:
读取模块301,用于在所述装置运行卷积神经网络模型时,读取上位机写入的所述卷积神经网络模型的每个卷积层对应的Wf、scalef以及Biasf;
运算模块302,用于基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算。
可选的,所述运算模块302用于:
基于所述每个卷积层对应的Wf对该卷积层的输入进行卷积计算,获得卷积计算结果;
基于该卷积层对应的scalef对所述卷积计算结果执行移位操作,获得移位计算结果;
基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作,获得偏置计算结果;
对所述偏置计算结果进行激活函数Leaky-ReLU运算,获得该卷积层的输出结果。
可选的,所述运算模块302还用于:
在基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作之前,在确定所述移位计算结果超出范围[min_q,max_q]时,对所述移位计算结果进行裁剪处理,并使用裁剪后的移位计算结果替换原来的移位计算结果;其中,所述max_q为根据预设的量化位宽确定出的量化后的最大值,所述min_q为根据所述预设的量化位宽确定出的量化后的最小值;
在对所述偏置计算结果进行激活函数Leaky-ReLU运算之前,在确定所述偏置计算结果超出所述范围[min_q,max_q]时,对所述偏置计算结果进行裁剪处理,并使用裁剪后的偏置计算结果替换原来的偏置计算结果。
以上各模块所执行操作的具体实现方式可以参照本发明实施例上述在FPGA上运行卷积神经网络的方法中对应的步骤,本发明实施例不再赘述。
请参图4,基于同一发明构思,本发明实施例还提供一种在FPGA上运行卷积神经网络的装置,包括:
至少一个处理器401,以及
与所述至少一个处理器401通信连接的存储器402、通信接口403;
其中,所述存储器402存储有可被所述至少一个处理器401执行的指令,所述至少一个处理器401通过执行所述存储器402存储的指令,利用所述通信接口403执行本发明实施例上述在FPGA上运行卷积神经网络的方法。
可选的,处理器401具体可以包括中央处理器(central processing unit,CPU)、特定应用集成电路(application specific integrated circuit,ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(field programmablegate array,FPGA)开发的硬件电路,可以是基带处理器。
可选的,处理器401可以包括至少一个处理核心。
可选的,该装置还包括存储器402,存储器402可以包括只读存储器(read onlymemory,ROM)、随机存取存储器(random access memory,RAM)和磁盘存储器。存储器402用于存储处理器401运行时所需的数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种在可编程器件FPGA上实现卷积神经网络运算的方法,其特征在于,所述方法包括:
上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;其中,所述压缩尺度包括对所述每个卷积层的输出结果进行量化的第一压缩尺度scaleout、对所述每个卷积层的卷积核权重进行量化的第二压缩尺度scalew以及对所述每个卷积层的偏置进行量化的第三压缩尺度scalebias;
所述上位机根据所述每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
所述上位机将所述每个卷积层对应的Wf、scalef以及Biasf写入所述FPGA,以使所述FPGA在运行所述卷积神经网络模型时,基于所述每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。
2.如权利要求1所述的方法,其特征在于,所述上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度,包括:
所述上位机根据预设的量化位宽确定出量化后的最大值max_q、最小值min_q以及缩放尺度搜索空间scale_list;其中所述缩放尺度搜索空间scale_list中包括多个不同的缩放尺度;
所述上位机针对卷积神经网络模型的每个卷积层的任一计算参数input,基于所述搜索空间scale_list中每个缩放尺度对所述任一计算参数进行缩放取整处理,获得该缩放尺度对应的缩放取整结果;如果所述缩放取整结果未超出范围[min_q,max_q],则将所述缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果,否则对所述缩放取整结果进行裁剪处理,并将裁剪后的缩放取整结果作为该缩放尺度下所述任一计算参数的量化结果;使用该缩放尺度将该缩放尺度下所述任一计算参数的量化结果映射回浮点空间,获得该缩放尺度下所述任一计算参数的去量化结果dequantized_input;
所述上位机计算所述搜索空间scale_list中每个缩放尺度下所述任一计算参数的量化结果input和去量化结果dequantized_input的L2范数;从所述缩放尺度搜索空间scale_list中确定出使得L2范数最小的缩放尺度;将所述使得L2范数最小的缩放尺度作为该卷积层的所述任一计算参数的缩放尺度。
3.如权利要求1所述的方法,其特征在于,所述上位机在根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,所述方法还包括:
所述上位机将若干个样本输入所述卷积神经网络模型;
所述上位机统计所述卷积神经网络模型的每个卷积层的输出结果的分布情况;
所述上位机根据所述每个卷积层的输出结果的分布情况确定一个特征值,用以表征该卷积层的输出结果。
4.如权利要求1所述的方法,其特征在于,在所述上位机根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度之前,所述方法还包括:
当所述卷积神经网络模型的任一卷积层包含有批标准化运算时,基于以下公式对所述任一卷积层的批标准化权重值γ和卷积计算权重值W进行合并,获得该卷积层的卷积核权重Winf和偏置Biasinf:
其中,β为批标准化偏置值,μ为批标准化均值,σ为批标准化标准差。
5.如权利要求1-4任一项所述的方法,其特征在于,所述上位机根据所述每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf,包括:
所述上位机基于所述每个卷积层对应的第二压缩尺度scalew对该卷积层的卷积核权重进行量化,获得量化后的卷积核权重;确定所述量化后的卷积核权重为所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf;
所述上位机根据所述每个卷积层对应的第一压缩尺度scaleout、第二压缩尺度scalew以及该卷积层的上一卷积层对应的第一压缩尺度scaleout,确定所述FPGA对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1;
所述上位机根据所述每个卷积层对应的第三压缩尺度scalew对该卷积层的偏置进行量化,获得量化后的偏置Bias‘;根据所述每个卷积层对应的第一压缩尺度scaleout、第三压缩尺度scalebias以及量化后的偏置Bias‘,确定所述FPGA对该卷积层的移位计算结果进行偏置操作的偏置Biasf。
6.一种在FPGA上运行卷积神经网络的方法,其特征在于,所述方法包括:
FPGA在运行卷积神经网络模型时,读取上位机写入的所述卷积神经网络模型的每个卷积层对应的Wf、scalef以及Biasf;
所述FPGA基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算。
7.如权利要求6所述的方法,其特征在于,所述FPGA基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算,包括:
所述FPGA基于所述每个卷积层对应的Wf对该卷积层的输入进行卷积计算,获得卷积计算结果;
所述FPGA基于该卷积层对应的scalef对所述卷积计算结果执行移位操作,获得移位计算结果;
所述FPGA基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作,获得偏置计算结果;
所述FPGA对所述偏置计算结果进行激活函数Leaky-ReLU运算,获得该卷积层的输出结果。
8.如权利要求7所述的方法,其特征在于,在所述FPGA基于该卷积层对应的Biasf对所述移位计算结果执行偏置操作之前,所述方法还包括:
所述FPGA在确定所述移位计算结果超出范围[min_q,max_q]时,对所述移位计算结果进行裁剪处理,并使用裁剪后的移位计算结果替换原来的移位计算结果;其中,所述max_q为根据预设的量化位宽确定出的量化后的最大值,所述min_q为根据所述预设的量化位宽确定出的量化后的最小值;
在所述FPGA对所述偏置计算结果进行激活函数Leaky-ReLU运算之前,所述方法还包括:
所述FPGA在确定所述偏置计算结果超出所述范围[min_q,max_q]时,对所述偏置计算结果进行裁剪处理,并使用裁剪后的偏置计算结果替换原来的偏置计算结果。
9.一种在FPGA上运行卷积神经网络的系统,其特征在于,包括通信连接的上位机和FPGA;
其中,所述上位机用于执行权利要求1-5所述的方法;
所述FPGA用于执行权利要求6-9所述的方法。
10.一种在FPGA上运行卷积神经网络的装置,其特征在于,所述装置包括:
计算模块,用于根据预设的量化位宽计算对卷积神经网络模型的每个卷积层的各个计算参数进行量化的压缩尺度;其中,所述压缩尺度包括对所述每个卷积层的输出结果进行量化的第一压缩尺度scaleout、对所述每个卷积层的卷积核权重进行量化的第二压缩尺度scalew以及对所述每个卷积层的偏置进行量化的第三压缩尺度scalebias;
确定模块,用于根据所述每个卷积层对应的压缩尺度,确定出FPGA在执行该卷积层的运算时,所述FPGA对该卷积层进行卷积计算所使用的卷积核权重Wf、对该卷积层的卷积计算结果进行移位操作的移位尺度参数scalef1以及对该卷积层的移位计算结果进行偏置操作的偏置Biasf;
通信模块,用于将所述每个卷积层对应的Wf、scalef以及Biasf写入所述FPGA,以使所述FPGA在运行所述卷积神经网络模型时,基于所述每个卷积层对应的Wf、scalef以及Biasf执行该卷积层的运算。
11.一种在FPGA上运行卷积神经网络的装置,其特征在于,所述装置包括:
读取模块,用于在所述装置运行卷积神经网络模型时,读取上位机写入的所述卷积神经网络模型的每个卷积层对应的Wf、scalef以及Biasf;
运算模块,用于基于所述每个卷积层对应的Biasf、scalef及Wf执行该卷积层的运算。
12.一种在FPGA上运行卷积神经网络的装置,其特征在于,包括:
至少一个处理器,以及与所述至少一个处理器通信连接的存储器、通信接口;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,利用所述通信接口执行权利要求1-9中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910075397.3A CN109840589B (zh) | 2019-01-25 | 2019-01-25 | 一种在fpga上运行卷积神经网络的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910075397.3A CN109840589B (zh) | 2019-01-25 | 2019-01-25 | 一种在fpga上运行卷积神经网络的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840589A true CN109840589A (zh) | 2019-06-04 |
CN109840589B CN109840589B (zh) | 2021-09-24 |
Family
ID=66884211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910075397.3A Active CN109840589B (zh) | 2019-01-25 | 2019-01-25 | 一种在fpga上运行卷积神经网络的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840589B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110059808A (zh) * | 2019-06-24 | 2019-07-26 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络的数据读取方法及数据读取装置 |
CN110309877A (zh) * | 2019-06-28 | 2019-10-08 | 北京百度网讯科技有限公司 | 一种特征图数据的量化方法、装置、电子设备及存储介质 |
CN110490317A (zh) * | 2019-10-17 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 神经网络运算装置及运算方法 |
CN110659725A (zh) * | 2019-09-20 | 2020-01-07 | 字节跳动有限公司 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
CN110738313A (zh) * | 2019-10-15 | 2020-01-31 | 北京百度网讯科技有限公司 | 用于评估量化操作的方法、装置、设备和介质 |
CN111144457A (zh) * | 2019-12-13 | 2020-05-12 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、设备及存储介质 |
CN111160544A (zh) * | 2019-12-31 | 2020-05-15 | 上海安路信息科技有限公司 | 数据激活方法及fpga数据激活系统 |
CN111178514A (zh) * | 2019-12-31 | 2020-05-19 | 翱捷智能科技(上海)有限公司 | 神经网络的量化方法及系统 |
CN111178546A (zh) * | 2019-12-31 | 2020-05-19 | 华为技术有限公司 | 机器学习模型的搜索方法及相关装置、设备 |
CN111260022A (zh) * | 2019-11-22 | 2020-06-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111275184A (zh) * | 2020-01-15 | 2020-06-12 | 中山大学 | 一种实现神经网络压缩的方法、系统、装置和存储介质 |
WO2021022903A1 (zh) * | 2019-08-07 | 2021-02-11 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112990438A (zh) * | 2021-03-24 | 2021-06-18 | 中国科学院自动化研究所 | 基于移位量化操作的全定点卷积计算方法、系统及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106485316A (zh) * | 2016-10-31 | 2017-03-08 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
US20170286830A1 (en) * | 2016-04-04 | 2017-10-05 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
US20180053091A1 (en) * | 2016-08-17 | 2018-02-22 | Hawxeye, Inc. | System and method for model compression of neural networks for use in embedded platforms |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
-
2019
- 2019-01-25 CN CN201910075397.3A patent/CN109840589B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170286830A1 (en) * | 2016-04-04 | 2017-10-05 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
US20180053091A1 (en) * | 2016-08-17 | 2018-02-22 | Hawxeye, Inc. | System and method for model compression of neural networks for use in embedded platforms |
CN106485316A (zh) * | 2016-10-31 | 2017-03-08 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
Non-Patent Citations (4)
Title |
---|
ALEXANDRE VIEIRA等: "Accelerating CNN computation: quantisation tuning and network resizing", 《ANDARE "18: PROCEEDINGS OF THE 2ND WORKSHOP ON AUTOTUNING AND ADAPTIVITY APPROACHES FOR ENERGY EFFICIENT HPC SYSTEMS》 * |
YUCHEN YAO等: "A FPGA-based Hardware Accelerator for Multiple Convolutional Neural Networks", 《2018 14TH IEEE INTERNATIONAL CONFERENCE ON SOLID-STATE AND INTEGRATED CIRCUIT TECHNOLOGY》 * |
余子健: "基于FPGA的卷积神经网络加速器", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
柳杨: "《数字图像物体识别理论详解与实战》", 31 March 2018, 北京邮电大学出版社 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110059808A (zh) * | 2019-06-24 | 2019-07-26 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络的数据读取方法及数据读取装置 |
CN110309877A (zh) * | 2019-06-28 | 2019-10-08 | 北京百度网讯科技有限公司 | 一种特征图数据的量化方法、装置、电子设备及存储介质 |
WO2021022903A1 (zh) * | 2019-08-07 | 2021-02-11 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110659725A (zh) * | 2019-09-20 | 2020-01-07 | 字节跳动有限公司 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
CN110659725B (zh) * | 2019-09-20 | 2023-03-31 | 字节跳动有限公司 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
CN110738313A (zh) * | 2019-10-15 | 2020-01-31 | 北京百度网讯科技有限公司 | 用于评估量化操作的方法、装置、设备和介质 |
CN110738313B (zh) * | 2019-10-15 | 2022-05-31 | 阿波罗智能技术(北京)有限公司 | 用于评估量化操作的方法、装置、设备和介质 |
CN110490317A (zh) * | 2019-10-17 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 神经网络运算装置及运算方法 |
CN111260022B (zh) * | 2019-11-22 | 2023-09-05 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111260022A (zh) * | 2019-11-22 | 2020-06-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111144457B (zh) * | 2019-12-13 | 2024-02-27 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、设备及存储介质 |
CN111144457A (zh) * | 2019-12-13 | 2020-05-12 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、设备及存储介质 |
CN111178546A (zh) * | 2019-12-31 | 2020-05-19 | 华为技术有限公司 | 机器学习模型的搜索方法及相关装置、设备 |
CN111160544B (zh) * | 2019-12-31 | 2021-04-23 | 上海安路信息科技股份有限公司 | 数据激活方法及fpga数据激活系统 |
CN111178514A (zh) * | 2019-12-31 | 2020-05-19 | 翱捷智能科技(上海)有限公司 | 神经网络的量化方法及系统 |
CN111178546B (zh) * | 2019-12-31 | 2023-05-23 | 华为技术有限公司 | 机器学习模型的搜索方法及相关装置、设备 |
CN111160544A (zh) * | 2019-12-31 | 2020-05-15 | 上海安路信息科技有限公司 | 数据激活方法及fpga数据激活系统 |
CN111275184A (zh) * | 2020-01-15 | 2020-06-12 | 中山大学 | 一种实现神经网络压缩的方法、系统、装置和存储介质 |
CN111275184B (zh) * | 2020-01-15 | 2022-05-03 | 中山大学 | 一种实现神经网络压缩的方法、系统、装置和存储介质 |
CN112990438B (zh) * | 2021-03-24 | 2022-01-04 | 中国科学院自动化研究所 | 基于移位量化操作的全定点卷积计算方法、系统及设备 |
CN112990438A (zh) * | 2021-03-24 | 2021-06-18 | 中国科学院自动化研究所 | 基于移位量化操作的全定点卷积计算方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109840589B (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840589A (zh) | 一种在fpga上运行卷积神经网络的方法、装置及系统 | |
CN110600017B (zh) | 语音处理模型的训练方法、语音识别方法、系统及装置 | |
EP4152154A1 (en) | Adaptive artificial neural network selection techniques | |
CN109711528A (zh) | 基于特征图变化对卷积神经网络剪枝的方法 | |
CN108664981A (zh) | 显著图像提取方法及装置 | |
US10467547B1 (en) | Normalizing text attributes for machine learning models | |
CN112148772A (zh) | 告警根因识别方法、装置、设备和存储介质 | |
CN110718211B (zh) | 一种基于混合压缩卷积神经网络的关键词识别系统 | |
CN109743311A (zh) | 一种WebShell检测方法、装置及存储介质 | |
CN110672323B (zh) | 一种基于神经网络的轴承健康状态评估方法及装置 | |
CN111860771B (zh) | 一种应用于边缘计算的卷积神经网络计算方法 | |
CN112598110B (zh) | 神经网络构建方法、装置、设备及介质 | |
WO2020207393A1 (zh) | 算子运算调度方法和装置 | |
CN114387512B (zh) | 基于多尺度特征融合与增强的遥感影像建筑物提取方法 | |
CN113241064B (zh) | 语音识别、模型训练方法、装置、电子设备和存储介质 | |
CN110265002A (zh) | 语音识别方法、装置、计算机设备及计算机可读存储介质 | |
CN105354228A (zh) | 相似图搜索方法及装置 | |
CN109697083B (zh) | 数据的定点化加速方法、装置、电子设备及存储介质 | |
CN111242314B (zh) | 深度学习加速器基准测试方法和装置 | |
CN112418388A (zh) | 一种实现深度卷积神经网络处理的方法及装置 | |
CN110610140A (zh) | 人脸识别模型的训练方法、装置、设备及可读存储介质 | |
CN112559713B (zh) | 文本相关性判断方法及装置、模型、电子设备、可读介质 | |
CN113657468A (zh) | 预训练模型的生成方法、装置、电子设备和存储介质 | |
CN114626501A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN117609870B (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 |