文献[11]中的例证表明FPNA计算范例确实允许一系列给定的神经资源代替具有不同架构的标准神经网络。然而,从图4中可能并非如此,MLP架构并没有得到简化,原因在于如此简单的MLP完全没有必要,也不可能再简化。文献[12]描述了大型神经网络得到明显简化的实例。需要注意的是,FPNA是一个适应神经计算的硬件框架,而不是一种处理简化神经计算的实现方法(Field Programmable Neural Network,FPNN)。要设计一个FPNA,首先要选择一个针对应用的合适的标准神经架构,然后决定一个既适合于实现又在功能上等价于所选择神经网络的可配置FPNA,FPNA独特的计算方案在于在复杂神经网络和可用的硬件资源之间创造了一座桥梁,它适用于许多实现选择;最后,得到的FP-NA直接映射到硬件设备上,这将得益于完整的模块式实现,即对于每个神经资源,预先给定可配置模块,然后依照。FPNA硬件友好的架构进行组合。
3 基于FPGA的神经网络的性能评估及局限性
对于FPGA实现的ANN,最普遍的性能评估方法是每秒神经元乘累加的次数(Connections-Per-Sec-ond,CPS)和即每秒权值更新的次数(Connections-Updates-Per-Second,CPUS)。但是CPS和CPUS并不是适于所有的网络,如RBF径向基网络,另外,更大的CPS和CPUS值并不一定意味着更好的性能。因此,最好的性能测量方法是实际执行时间,但是仍有些问题要讨论。FPGA实现神经网络存在的一些缺点(相对于计算机软件而言):
(1)FPGA上实现的神经网络大多数是计算结构,而不是认知结构(虽然现在有些人试图在FPGA上实现BP算法。但是整个的结构和时序控制变得很复杂,并且无法达到计算机软件那样的计算精度);
(2)在FPGA上实现的神经网络通用性差。目前FPGA的使用者大多数都是在RTL级(寄存器传输级)编写VHDL/Verilog HDL实现数字系统,而正在兴起的Handel-C&SystemC,可以使硬件编程者站在算法级角度,可能对以后的基于FPGA的神经网络的性能有所改善。
4 基于FPGA实现神经网络的发展方向
(1)一种基于REMAP-β实现神经网络汁算机的方法。REMAP-β可重构架构基于FPGA技术,RE-MAP-β并行计算机应用在嵌入式实时系统中,以有效提高ANN算法实现的效率,目前它的进一步发展RE-MAP-r正在探讨中。
(2)另一种基于FPGA实现神经网络的发展方向——系统C语言,直接在可编程硬件平台支持C/C++,使得编程更加容易。但是这个转换并不容易,因为:FPGA不是程序,而是电路。
5 结 语
详细总结了FPGA实现神经网络的方法及相关问题,这里要注意,基于FPGA实现神经网络,并不是要与基于计算机软件实现一比高低,相反,在很多情况下,采用计算机软件测试神经网络的收敛情况,计算出收敛时的权值,然后通过数据口线与FPGA模块通信,把权值交给FPGA中的神经网络,使用FPGA完成现实的工作。直到现在,软件方法仍然是实现神经网络的首选。另外,对于硬件设计者(指利用FPGA或者全定制、半定制ASIC实现设计)而言,mask ASICs提供首选的方法以得到大规模、快速和完全的神经网络。现在它已经开发出了所有的新型可编程器件的嵌入式资源,以得到可以实时训练的更有用的神经网络。