数据量化
环境: Pytorch,Pycham,Matlab。(订阅后有问题,或者需要该节的文件直接加微信:Crazzy_M)
说明: 上一节已经通过Matlab中基础的乘加运算进行了CNN网络的前向计算过程。
该节利用Matlab将导出的CNN网络所需要的参数进行定点量化,最后传输至FPGA端进行计算。
第一节:基于FPGA的一维卷积神经网络CNN的实现(一)框架
第二节:基于FPGA的一维卷积神经网络CNN的实现(二)资源分配
第三节:基于FPGA的一维卷积神经网络CNN的实现(三)训练网络搭建及参数导出(附代码)
第四节:基于FPGA的一维卷积神经网络CNN的实现(四)Matlab前向验证(附代码)
第五节:基于FPGA的一维卷积神经网络CNN的实现(五)数据量化(附代码)
第六节:基于FPGA的一维卷积神经网络CNN的实现(六)卷积层实现
第七节:基于FPGA的一维卷积神经网络CNN的实现(七)池化层实现
第八节:基于FPGA的一维卷积神经网络CNN的实现(八)激活层实现
文章目录
1.FPGA DSP简介
本文使用的FPGA内嵌的专用DSP资源为DSP48E2,DSP48E2的结构如下图所示

DS48E2内置27bit预加器(加法器),27×18的乘法器可以完成27bit与18bit的乘法运算。所以数据选择了18bit的位宽。但是在FPGA中计算定点数要优于浮点数运算,所以要将进入网络的数据以及权重参数转换为规定位宽的定点数。
2.数据量化
FPGA作为一种可编程器件,内部有丰富的逻辑资源和专用的DSP计算单元,可利用丰富的逻辑资源和专用DSP计算单元通过FPGA并行特性实现CNN网络中大量的乘加运算。神经网络计算离不开小数的运算,小数在FPGA内部可以有两种表示方式:浮点数和定点数,本文采用定点数据格式进行数据的运算。该两种表示方法最大的区别在于小数点是否为固定值。
(1)浮点数
浮点数,即小数点非固定的数,其表示的范围较广,整数和小数都可以表示,有单精度(float)和双精度(double)两种表示方法。浮点数由符号位、阶码和尾数构成。

其中1bit


本文介绍了一维卷积神经网络在FPGA上的实现,重点讨论数据量化过程。利用Matlab对CNN参数进行定点量化,以便于在FPGA的DSP48E2单元中进行计算。介绍了浮点数和定点数的区别,阐述了定点数在FPGA计算中的优势,并提供了数据量化代码示例。
订阅专栏 解锁全文
数据量化(附代码)&spm=1001.2101.3001.5002&articleId=125160990&d=1&t=3&u=9a53b2baca954c6db1f064a0f493f068)
2万+

被折叠的 条评论
为什么被折叠?



