神经网络LeNet5的 的 FPGA RTL级实现 4
前面讲解了C程序的基本情况,下面就是重中之重 —— 数据如何使用。也就是群中分享的文件。首先看两个文件夹
dat_save_img5 ---> 此文件夹中采用MNIST数据集里第五张图的数据。方便在matlab中导入。
dat_save_img5_fpga --- > 此文件夹中的数据与上面的一样,只是采用里并行输出方式,方便在FPGA中导入。当然你在FPGA中采用上一个文件夹中的数据完全没问题。
例如 权重 W23 在上述两个文件夹中分别是。第二种排列,我将数据导入到FPGA的rom中,一个地址读一次就可以将一个 5x5的权重矩阵读出来,第一种排列导入到rom中就需要递增25个地址读25次。就是这个差别了。
下面说第一层数据的引用。
第一层,输入数据为 32x32 的矩阵,打开txt文件一张二值化的 4 显现出来,这个在之前的 2 章节有截图。这个 32x32 的图像经过了 6 个 5x5的卷积核,卷积之后出来了 6 张 28x28 的小图。打开 dat_save_img5_fpga 中的 lay1_dat.txt 还可以分辨出6张4的二值化小图。整个运算过程是什么样子的呢? 便于理解我将 matlab中的程序贴一部分出来,三张图依次是 导入txt数据(cell),转换成double类型准备运算,运算过程
妥妥的 5x 5 卷积之后再加上一个 bias,然后relu一下 —— 负数就归0. 第一层 OVER !所以用FPGA实现 神经网络是很简单的(需要一个量化后的精度验证环境)。需要注意一点的是,matlab中强制类型转换默认是四舍五入,导致和C语言中的导出的数据有一点点差别,但是不影响最终的结果。
下面一层是pooling ,就是简单的2x2的矩形框里找最大数,步进为2。 matlab实现方式如下:
依次类推到最后一层,第六层。也就是文件里面的outx.txt的数据。
最终结果,因为C中的截断 与matlab中默认的四舍五入 两种定点化方式不同导致结果数据大小有一点点不同。但是不影响最终结论。推断出也是数据4 。
前面的铺垫如此了,后面的文章就是专门介绍 HDL 部分。
神经网络LeNet5的 的 FPGA RTL级实现 4相关推荐
- 神经网络LeNet5的 的 FPGA RTL级实现 3
经过了前面的开胃菜,项目正式开始.一步步讲解这个模型怎么玩起来的.从C 到 matlab 到 FPGA ,三个平台联合起来完成这个 由 RTL 实现 CNN 的项目. 第一步,讲解深度学习模型在C中是 ...
- FPGA RTL级设计原则
1.1 FPGA RTL级设计原则 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA RTL级设计原则: 5)结束语. 1.1.2 本节引言 "不积跬步 ...
- 【FGPA】RTL级的意思
求科普:RTL级是什么意思 我用FPGA只知道写VERILOG,然后MODELSIM仿真,然后综合.一直看大家说RTL级,这是个什么意思,还有其他级吗? sdwsh (2012-7-27 13:26: ...
- IC设计通过system c 建模和 rtl级的有什么区别
对于IC项目的设计.验证各个阶段,都是在玩弄model,只不过是大家的观看视角不同而已.有些人喜欢华丽外表的model,有些人关注身披薄纱的.或一丝不挂的. SystemC是一种建模语言,可以对软硬件 ...
- 深度学习(四)卷积神经网络Lenet-5实现
卷积神经网络Lenet-5实现 原文地址:http://blog.csdn.net/hjimce/article/details/47323463 作者:hjimce 卷积神经网络算法是n年前就有的算 ...
- Verilog的数据流、行为、结构化与RTL级描述
Verilog语言可以有多种方式来描述硬件,同时,使用这些描述方式,又可以在多个抽象层次上设计硬件,这是Verilog语言的重要特征. 在Verilog语言中,有以下3种最基本的描述方式: 数据流描述 ...
- (四)RTL级低功耗设计
前面介绍了系统级的低功耗设计,换句话说就是在系统级降低功耗可以考虑的方面.系统级的低功耗设计,主要是由系统级设计.具有丰富经验的人员实现,虽然还轮不到我们设计,我们了解一下还是比较好的.我们前端设计人 ...
- HLS:卷积神经网络LeNet5的实现与测试
目录 一.引言 二.LeNet5的学习 三.数学知识补充 四.HLS代码设计 五.仿真综合与优化 六.Zynq平台搭建测试 七.一些注意点 八.文献时间线与后续工作 一.引言 1.开发环境. Wind ...
- 深度学习 CNN卷积神经网络 LeNet-5详解
卷积神经网络( Convolutional Neural Network, CNN): 是一种常见的深度学习架构,受生物自然视觉认知机制(动物视觉皮层细胞负责检测光学信号)启发而来,是一种特殊的多层前 ...
最新文章
- python 把2个列表或者2个元组转成字典
- 输入字符串中含有该字符的个数
- springMVC 几种页面跳转方式
- js中类型识别的方法
- UDP(发短信:简单模拟)
- linux制作成后台服务,把dotnetcore 控制台app设置成linux后台服务
- CodeForces 1138B暴力+剪枝
- Property or method “id“ is not defined on the instance but referenced during render.Make sure ......
- MVC教程第四篇:传递表单数据
- 【快速入门Linux】8_Linux命令—系统信息相关命令(时间、磁盘、进程)
- Python(2.7)-元组(tuple)
- classpath目录
- php数组的几个函数和超全局变量
- TensorFlow基础篇(一)——tf.train.exponential_decay()
- 论SetItemData和GetItemData
- ELK 学习笔记之 elasticsearch Bulk操作
- vue仿网易云音乐播放器
- 微信公众平台二次开发技术文档
- python爬虫-京东登录
- 第九届蓝桥杯 省赛 C语言A组
热门文章
- React-Antd 登录 记住密码
- [转载] 史蒂夫·乔布斯恪守三条原则: “共鸣”“专注”和“灌输”
- Win7,每打开一个文件夹,都会在新窗口中打开
- css阴影遮盖其他组件
- native字体尺寸自适应 react_react native 字体不随系统字体变化而变
- 【Pytorch】使用Pytorch进行知识蒸馏
- python有头文件吗_python头文件怎么写
- oracle 内关联,左外关联,右外关联,全外关联
- java web 编辑器_基于Java+web的在线Java编辑器 PDF 下载
- 【金阳光测试】Android自动化测试第一季第三讲—Monkey原理初步和改良优化