基于FPGA的一维卷积神经网络CNN的实现(五)数据量化(附代码)

本文介绍了一维卷积神经网络在FPGA上的实现,重点讨论数据量化过程。利用Matlab对CNN参数进行定点量化,以便于在FPGA的DSP48E2单元中进行计算。介绍了浮点数和定点数的区别,阐述了定点数在FPGA计算中的优势,并提供了数据量化代码示例。

数据量化

环境: 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字硬鉴

你的鼓励就是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值