基于fpga的卷积神经网络
前期准备工作
首先使用tensorflow设计卷积神经网络,并进行训练。方便起见,我使用了mnist数据集,设计的网络结构为:
input layer 24x24
conv1 layer 20x20x6
maxpooling1 layer 10x10x6
conv2 layer 6x6x12
maxpooling2 layer 3x3x12
output layer 10
将参数保存为.mat文件,给MATLAB。
然后使用MATLAB将图片和参数都保存为.coe文件,用来生成fpga中rom使用的文件。
最后编写fpga代码实现网络结构,由于资源有限,设计卷积神经网络的并行度为2,每次同时计算2个feature map。
注:TensorFlow中的参数保存的方式比较奇怪,用MATLAB进行验证时发现输入图像和卷积层的参数需要转置!!!!!!