基于Cortex-M3的IP软核实现神经网络加速的SoC设计 (1)算法分析

基于Cortex-M3的IP软核实现神经网络加速的SoC设计 (1)算法分析

关键字:神经网络加速,前馈神经网络,人工神经元

<0>人工神经元
神经网络算法包含推理和训练两个过程,大部分神经网络加速硬件是针对推理过程的,推理过程相对与训练过程较为简单。以前馈神经网络为例,单个神经元的计算过程是如下图,其中X是输入,W是权重,B是阈值,f是激活函数,Y是输出。
基于Cortex-M3的IP软核实现神经网络加速的SoC设计 (1)算法分析_第1张图片
推理过程
权重和阈值是需要训练得到的,我们设计的加速器只针对推理过程,所以训练过程可以在PC上完成然后导出。例如通过BP算法得到网络参数的前馈神经网络是BP神经网络。神经网络通常包含一层输入层,一层输出层和若干层隐含层,输入层节点的个数和所需处理的数据相关,输出层的节点数目和所得到的结果数目相关,例如识别数字的输出层节点数应该是代表0到9数字的共10个节点。隐含层的层数和每层个数是可以根据训练效果调整的。
基于Cortex-M3的IP软核实现神经网络加速的SoC设计 (1)算法分析_第2张图片
前馈神经网络的推理过程还是比较简单的,只涉及乘法、加法和激活函数,可以用硬件电路实现相应的过程,但是实现过程中有一些问题还是需要考虑的。

<1>硬件实现时考虑的问题
1.由于不同应用场景下的神经网络拓扑结构会有所差异,因此需要考虑用何种架构的硬件适应不同结构的前馈神经网络。
2.权重阈值等网络参数会根据不同网络结构改变,并且这些数据如何缓存以达到更高的效率。
3.推理运算电路的数据位宽和运算电路结构,以及激活函数的实现方式。

<2>神经网络加速器
由于之后要和M3处理器做系统集成,不同拓扑结构的适配可以通过软件编程的方式适应,所以我们加速器电路选择的方案就是运算电路+缓存电路+控制寄存器的方法来解决上面的几个问题,这样类似MCU的结构便于以MCU调用外设的方式进行控制,但是由于一些总线带宽问题的限制,加速器还需要一些额外接口和设备配合实现。

你可能感兴趣的:(神经网络加速)