摘要:在文章【1】中,提出并制定了一种基于C++的训练方法,以加速在FPGA中实现人工神经网络(ANN)。所提出的ANN实现方法使用一个自定义的基于C++的程序,称为神经网络设计参数提取(Neural Network Design Parameter Extraction(NNDPE))程序,该程序是使用一个名为快速人工神经网络(Fast Artificial Neural Network(FANN))的开源库开发的。所提出的基于C++的NNDPE程序减少了训练和提取ANN的设计参数所需的时间,这些参数包括层数、每层的神经元数量和权重。提取的ANN设计参数、自定义硬件算术单元和函数近似激活函数用于在Virtex-7 FPGA平台上实现线性函数的ANN硬件架构。
人工神经网络(ANN)是一种基于生物神经系统结构和功能特征的计算模型。ANN由一组互相连接的人工神经元组成,这些神经元共同并行地执行功能。互连通过通常是真实值的权重来建模。ANN可以使用高级编程语言实现,并在诸如CPU和GPU等硬件平台上执行。ANN的硬件实现提供了高速的优势,使其比个人电脑(PC)或工作站内最常见的实现更适合实时应用。
FPGA最适合用于人工神经网络(ANN)的实现,因为它保持了并行架构和配置灵活性,与ASIC相比,在执行速度上有所妥协。然而,在FPGA上实现ANN是具有挑战性的,因为ANN的硬件实现需要实现非线性激励函数、乘法器、加法器及其加权互连。而且,ANN的直接硬件实现也很困难,因为在训练期间,层数和每层中的神经元数量需要调整,直到达到所需的功能和可接受的误差。因此,软件训练后再进行硬件实现是文献中普遍采用的ANN硬件开发和实现的设计方法。
FPGA架构及其如何支持ANN实现
ANN的训练
- 使用MATLAB/Python等编程语言:更多的训练时间。
- C/C++:更高效
ANN的硬件实现
完整(Full)的ANN架构实现
- 定点运算单元:在FPGA上占用较少的切片,适合大规模实现
- 浮点运算单元:精度更高
一种用于实现ANN的Rox-ANN设计方法学使用处理单元(Processing Elements(PEs)),这些处理单元是基于精确/近似算术单元(例如加法器和乘法器)设计的,以计算神经元的部分加权和。对ANN的训练设计参数进行分析和聚类,以优化设计中所需的近似乘法器的总数量。
部分(partial)或分层(layered)的ANN架构实现
以往的文献采用多种技术以减少ANN实现的资源需求,从而使得大型人工神经网络能够以较低的成本在特定的FPGA或单个芯片上实现:
1. 基于现场可编程门阵列的人工神经网络硬件实现
采用模块化方法的数字系统架构(digital system architecture)旨在实现FPGA中的人工神经网络,这可以允许增加或减少神经元的数量以及层数。
所设计的架构使用非常高速度集成电路硬件描述语言(Very High Speed Integrated Circuits Hardware Description Language(VHDL))进行描述。神经网络的并行结构使其在某些任务的计算上具有潜在的快速性能。这一特性使得神经网络非常适合在超大规模集成电路技术中实现。神经网络(NN)的硬件实现在很大程度上依赖于单个神经元的高效实现。基于FPGA的可重构计算架构适合于神经网络的硬件实现。然而,拥有大量神经元的人工神经网络(ANN)的FPGA实现仍然是一个具有挑战性的任务。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



