基于FPGA的手写数字识别神经网络加速——pytorch网络搭建及训练

Posted 佛系的FPGAer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于FPGA的手写数字识别神经网络加速——pytorch网络搭建及训练相关的知识,希望对你有一定的参考价值。

点击蓝字

该项目的Github链接如下:

https://github.com/buaa-zzx/Deep_learning_on_FPGA

LetNet网络作为神经网络学习的当中的“Hello World”,是学习神经网络的经典项目,本次实验也利用PYNQ框架实现手写数字识别作为神经网络加速的入门教程。首先简要介绍一下LetNet网络:

其首先输入大小为32*32的单通道图片,然后通过若干卷积层和全连接层得到最终的分量向量,从而得到最终的分类结果。可以看到LetNet网络结构非常的简单明了,然后首先使用pytorch框架对网络进行搭建和训练,首先导入相关库函数:

基于FPGA的手写数字识别神经网络加速——pytorch网络搭建及训练

然后加载pytorch自带的MNIST数据集,并将其可视化:

基于FPGA的手写数字识别神经网络加速——pytorch网络搭建及训练

然后定义网络结构,并且使用优化器进行训练,可以看到,得到的训练结果如下所示:

基于FPGA的手写数字识别神经网络加速——pytorch网络搭建及训练

准确率在98%到99%之间波动,效果良好,然后对权重进行保存。由于保存的pth文件pynq难以直接读取,所以可以将其转换为其他形式的文件,如bin,txt等。这里为了让参数更加直观,将其保存为txt文件。由于pth文件其为字典形式的文件,所以需要编写一个脚本文件将其转换为需要的文件格式。打开第一个卷积层的权重可以看到其有150个数据,符合6*5*5=150的预期。LetNet的网络搭建及训练部分告一段落,下一部分将利用HLS平台实现整个神经网络。

名称|佛系的FPGAer



以上是关于基于FPGA的手写数字识别神经网络加速——pytorch网络搭建及训练的主要内容,如果未能解决你的问题,请参考以下文章

手写数字识别基于BP神经网络手写数字识别matlab源码含GUI

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

基于Numpy的神经网络+手写数字识别

手写数字识别基于matlab GUI BP神经网络手写数字识别含Matlab源码 1118期

手写数字识别基于matlab GUI RBM神经网络手写数字识别含Matlab源码 1109期