lab3:LeNet上板

本文详细介绍了在FPGA上实现LeNet卷积神经网络的过程,包括模型参数解析、数据路径设计与控制逻辑分离、定点数处理策略,以及遇到的常见问题和解决方案,如clock design、ILA调试、Verilog信号驱动限制等。同时,文章指出在FPGA上进行单元测试的复杂性,建议采用仿真测试代替。
摘要由CSDN通过智能技术生成

0.模型训练:暂时跳过

  CNN有监督,可以用BP训练:http://www.mamicode.com/info-detail-2288678.html

1.参数:

1.1一开始混乱的点

  (1)每个核有一个bias,每个核出一个通道的结果(一个特征)。

  (2)fcweight1:500行;fcweight1:10行;

  (3)一组核:所求特征(输出)由多个子特征(输入)组成,每个子特征有一个核

1.2过程  

  (1)卷积一:输入28*28,20个核(5*5)20个bias(1*20),输出20通道24*24,算步长:28=5+(24-1)*步长,所以步长=1;

  (2)卷积一池化:每2*2选一个最大值,无重合,规模横纵减半;

  (3)卷积二:输入20通道12*12,20*50个核(50组核,一组核对应一个bias,得一个通道结果)(每个通道输入*对应组对应通道的核),50个bias,输出50通道8*8,12=5+7*1,步长=1;

  (4)卷积二池化:减半

  (5)全连接层一:输入50通道4*4,展开1*800,映射到1*500(全连接->每个输入都要乘weightN+biasN=iN,所以有500*800个参数,500个bias,:(500*800)* (800*1)=(500*1)+bias(500*1)

  (6)全连接层一过滤:输入1*500,负数取正,输出1*500

  (7)全连接层二:输入1*500,输出1*10:(10*500)*(500*1)=10*1+bias(10*1)

  (8)输出:找到1*10向量中最大值,输出下标为识别结果

 weight=20*25+20*50*25+500*800+10*500=500+25000+400000+5000=430500 开440000空间

bias=20+50+500+10=580 开600

2.设计:看指导书

数据通路不要和控制写一起,控制单独写状态机!

(1)定点数问题:

  参数和数据处理:转为8位二进制数(有符号,参数有负数)。运算后要移位?

  教程:https://jingyan.baidu.com/article/f71d6037b3b43f1ab641d10d.html

  处理成1符号+2整数+5小数,相当于一个数放大了2^5倍

  原始数据*32=输入数据,还要看数据会不会溢出(大于3)

 

错误和经验:

1.clock design生成.v文件后,再把里面的模块设成top,单独写仿真或综合时是找不到这个模块的,要把block design生成的.v文件删了之后才能找到。。。但是重启vivado后又可以直接改top了?妙

2.lia&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值