FPGA进阶:手撸神经网络
手撸神经网络
进过了之前的基础学习,想必大家应该对verilog有了个比较清晰的认识
那么接下来,我们就来撸个神经网络吧!
首先来介绍一下该神经网络的规格:
使用IEEE标准的32位浮点数运算
网络大小为3*3*3
激活函数使用relu
神经网络为固定结构
使用组合电路,这意味着只要输入一个数据就能瞬间出来结果
所有的电路模块均为组合逻辑
使用到的基本资源:
浮点运算器,浮点乘法器,浮点加法器,激活函数运算器
特别注意:所有的数据类型均为单精度浮点数
首先是激活函数运算模块
1 | module Act_Func( |
浮点运算单元:
浮点运算单元比较复杂,这里不贴代码,
1 | FPU_ADD(a,b,y); |
人工神经元模块:
1 |
|
神经网络层:
1 | module Layer( |
神经网络:
1 | //3*3*3的神经网络 |
下面是仿真结果和电脑运行结果:
嗯,输出结果完全一样
嗯,看着是不是非常nb呢,由于使用了组合电路
因此这个模块只要输入数据就能瞬间输出数据
但由于是固定的,写死了的神经网络,所以它的搭建十分麻烦
完整代码click me