pynq-bnn

1. BNN-PYNQ

GitHub链接:https://github.com/Xilinx/BNN-PYNQ

在CNN基础上优化而来的BNN框架使用二值化操作代替浮点型计算,更加适合FPGA器件,网络在性能显著提升的同时,功耗也大幅度降低至2~2.5W。下图中,可明显地看到在硬件(PYNQ上的FPGA架构)上运行BNN的速度比在软件(PYNQ的ARM核)上运行要快得多。

BNN-PYNQ是Xilinx提供的一个面向PYNQ-Z1的开源二值神经网络(BNN)框架,它主要提供了两种不同拓扑结构网络——LFC及CNV——对应的overlay、五个已经训练好的BNN图像分类示例,亦提供了将自己训练的BNN导入overlay及构建新overlay的工具。

前向传播时,CPU、GPU及Google TPU等经典架构在计算队列中一次仅运行一个层,带来延时、效能等方面的问题。而对于硬件设计更为灵活的FPGA,可针对不同的网络拓扑,定制一种异构流式(heterogeneous streaming)架构:独立的计算引擎用于计算网络的每一层,通过片上数据流进行通信;一旦前一“层”产生了输出数据,则后一“层”将同时开始计算;这种方式避免了“一刀切”的低效率。

在PYNQ中,Overlay文件存放了BNN的拓扑结构,而各个参数、数据集、精度等存放于其他文件中,可根据需求进行自定义,以形成一个完整的神经网络。

BNN-PYNQ使用的是Theano及Pylearn2框架。对于其所提供的LFC及CNV的Overlay,可在bnn/src/training中找到mnist.py或cifar10.py,修改其中关于输入数据集的语句并在计算机上运行,即可训练得到新的网络;再通过同一文件夹下的mnist-gen-binary-weights.py或cifar10-gen-binary-weights.py,可生成权重文件,将其下载至PYNQ板上,即可开始运行网络。

若需定制不同的BNN拓扑结构,则必须使用自定义的Overlay,具体过程较为复杂,需要对BNN-PYNQ的内核有所了解,在此不再展开叙述。

BNN-PYNQ安装步骤

1. 单击Jupyter Notebook右上角的“New”,选择“Terminal”,以打开一个终端窗口;

2. 输入命令

(PYNQ v2.3)

(PYNQ v2.2 及更早版本)

若无法联网下载,则参看步骤3. 进行本地下载安装;

3. 从BNN-PYNQ页面中下载项目,由于Jupyter Notebook无法上传整个文件夹,故先上传项目压缩包,再新建一个python 3 notebook,通过代码

进行解压。接着输入

进行安装。

安装成功后,在根目录下将生成一个bnn文件夹,打开bnn/notebook即可看到各个示例文件,可打开执行。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值